什么是类的继承?
类的继承就是让子类拥有父类的属性和方法。
类继承格式:
class 子类名(父类1,父类2)
几个注意:py支持多继承
子类继承的父类只能初始化一次,如果父类1和父类2有共同的父类或者祖先类,则类初始化的时候会失败。
当父类具有相同方法时,会调用最先继承的父类中的方法,如果要指定父类,则需要重写此方法,并通过父类名.方法名来调用指定父类方法。
class Parent:
def eat(self):
print('父吃')
class Child(Parent):
def say(self):
print('孩说')
class Child1(Child):
def say(self):
print('重写方法')
#继承的基类只能出现一次,因为Child1继承了Child,所以Child类
#等于出现了两次,所以在类进行初始化时会发生错误,
#class Child2(Child,Child1):
# def fun(self):
# print()
class Parent2():
def eat(self):
print('父类2')
#当继承的两个类有相同的方法时,会优先加载先继承的类的方法
#如果要指定采用哪个父类的方法,则需要重写,并且将父类函数
#需要的参数传进去
class Child3(Parent,Parent2):
def eat(self):
Parent2.eat(self)
def fun(self):
print('无')
child=Child()
#子类调用父类方法
child.eat()
#子类自定义方法
child.say()
child1=Child1()
#子类重写父类方法
child1.say()
#子类调用祖父类方法
child1.eat()
child3=Child3()
child3.eat()
拓展:isinstance():判断某个实例是否属于某个类
此函数需要输入两个参数,第一个为实例,第二个为类。返回类型为布尔值
#用该实例与该类的父类进行比较,返回的也是true
print(isinstance(child3,Parent))dir(实例/类) : 返回一个对象/类的所有属性和方法
print(dir(child3))
print(dir(Child3))hasattr(类/实例,’属性’):是否存在此属性值
getattr(类/实例,’属性’):得到此属性值
setattr(类/实例,’属性’,更改值)
class Parent:
a=123
b='sgd'
def eat(self):
print('父吃')
parent=Parent()
#True 是否存在该属性之
print(hasattr(parent,'a'))
#123 得到该实例的a的属性值
print(getattr(parent,'a'))
#设置该对象的属性值
setattr(parent,'b',123)
#123
print(getattr(parent,'b'))