类的继承:一个类继承另一个类,自动拥有这个类的属性和方法,类似于包含与被包含的关系。被继承的类称为父类--子类则是继承父类的类。一个父类可以有多个子类;一个子类可以有多个父类(多继承)
问题
创建子类时,要是直接进行调用,系统会报错,必须对子类进行实例化。那要如何对子类进行实例化呢?
方法
首先先创造父类,将其属性定义,然后创建多个子类(格式子类(父类)),接着对子类实例化,在对子类实例化时也要将属性补充完整。
代码清单
错误示范:
#父类:将所有类的公共属性和方法进行统一定义
class Dad():
def __init__(self,greet,demandmoney):
print('老爸我没生活费了!')
self.greet=greet
self.demandmoney=demandmoney
def f(self):
print('{}今天你很帅,{}'.format(self.greet,self.demandmoney))
def ff(ff):
print('我没钱耍朋友了')
#子类(父类):可继承父类所有属性
class Girl(Dad):
pass #mean do nothing 但是仍然拥有父类的属性和方法
class Son(Dad):
pass #mean do nothing
a=Girl()
a.ff()
a.f()
运行结果:Traceback (most recent call last):
File "D:/123456/456.py", line 16, in <module>
a=Girl()
TypeError: Dad.__init__() missing 2 required positional arguments: 'greet' and 'demandmoney'
正确代码:
#父类:将所有类的公共属性和方法进行统一定义
class Dad():
def __init__(self,greet,demandmoney):
print('老爸我没生活费了!')
self.greet=greet
self.demandmoney=demandmoney
def f(self):
print('{}今天你很帅,{}'.format(self.greet,self.demandmoney))
def ff(ff):
print('我没钱耍朋友了')
#子类(父类):可继承父类所有属性
class Girl(Dad):
pass #mean do nothing 但是仍然拥有父类的属性和方法
class Son(Dad):
def son(self):#子类可以拥有自己的属性与方法
print('老爸我想多一点生活费')
#a=Girl()
#a.ff()
#a.f()
#创建对象(将子类进行实类化)
a=Girl('老爸早上好',1500)
a.ff()
a.f()
b=Son('老爸早上好',2000)
b.ff()
b.f()
b.son()
打印结果:老爸我没生活费了!
我没钱耍朋友了
老爸早上好今天你很帅,1500
老爸我没生活费了!
我没钱耍朋友了
老爸早上好今天你很帅,2000
老爸我想多一点生活费
结语
通过此次实验,我们更加了解了类的继承,以及要对子类实例化,对其实例化时也要将属性补充完整。