1.继承
class Animal: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): def talk(self): print('子类独有的方法!') # 子类可以使用父类中的方法 p = Person('yhf',23,'女') p.eat()
子类也可以继承父类的属性:
class Animal: a_type = '动物' def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): def talk(self): print('独有的方法!') p = Person('yhf',23,'女') # 子类也可以继承父类的属性 print(p.a_type)
2.重构父类中的方法
class Animal: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): def talk(self): print('独有的方法!') # 重写父类的方法 def eat(self): print('人在吃饭') # 子类和父类的方法重名,此时则执行子类中的方法,不执行父类中的方法 p = Person('yhf',23,'女') p.eat()
属性的重构:
class Animal: a_type = '动物' def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): a_type = '高级动物' def talk(self): print('独有的方法!') p = Person('yhf',23,'女') # 子类和父类的属性重名,此时按照子类的属性,不按父类的属性 print(p.a_type)
不完全重构(先执行子类的方法,在执行父类的方法)
class Animal: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): def talk(self): print('独有的方法!') # 重写父类的方法 def eat(self): Animal.eat(self) #在子类方法中调用父类方法中的重名方法,可以实现父类和子类中的同名方法都执行 print('人在吃饭') p = Person('yhf',23,'女') p.eat()
执行父类的构造方法:
class Animal: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): # 在子类的构造函数中调用父类的构造函数,同时执行子类和父类的构造方法 def __init__(self,name,age,sex,efv): Animal.__init__(self,name,age,sex) self.efv = efv p = Person('wdc','22','男',2019) print(p.name,p.sex,p.age,p.efv)
super方法:效果同上
class Animal: def __init__(self,name,age,sex): self.name = name self.age = age self.sex = sex def eat(self): print('{}正在吃东西~'.format(self.name)) # 继承(Animal)类 class Person(Animal): # 在子类的构造函数中调用父类的构造函数,同时执行子类和父类的构造方法 def __init__(self,name,age,sex,efv): # super方法:super(子类名,self).__init__(参数)或者super().__init__(属性) # super(Person,self).__init__(name,age,sex) super().__init__(name, age, sex) self.efv = efv p = Person('wdc','22','男',2019) print(p.name,p.sex,p.age,p.efv)