面向对象的3大特征:封装,继承,多态
创建类时,如果省略了父类,默认父类为Object
Object是所有类的父亲,所有类都继承自object
class person:
…
issubclass() 方法是检查一个类是否是另外一个类的子类
print(issubclass(animal,dog)) //true
print(issubclass(dog,animal)) //false
方法的重写
class Animal:
def run(self):
print("动物会跑")
def sleep(self):
print("动物会睡觉")
class Dog(Animal):
def run(self):
print("狗会跑")
def bark(self):
print("汪汪汪")
如果在子类中如果有和父类同名的方法,则通过子类实例去调用方法时
会调用子类的方法而不是父类的方法,这个特点我们叫做方法的重写(覆盖,override)
创建dog类的实例
class A(object):
def test(self):
print('AAA')
class B(A):
def test(self):
print('BBB')
class C(B):
def test(self):
print('CCC')
# 创建一个c的实例
c = C()
c.test()
当我们调用一个对象的方法时,
会优先去当前对象中寻找是否具有该方法,如果有则直接调用
如果没有,则去当前对象的父类中寻找,如果父类中有则直接调用父类中的方法,
如果没有,则去父类的父类中寻找,以此类推,直到找到object,如果依然没有找到,则报错
super()方法