python 面向对象专题(三):继承
2021-01-26 01:13
阅读:406
-
定义:只有一个父类
-
执行父类的属性和方法:
1.类名执行父类的属性和方法
2.派生类对象执行父类的属性和方法
? 1.查询顺序:
? 单向不可逆,子类可以使用父类的属性和方法,父类不可以使用子类的属性和方法? 2.实例化对象时必须执行
__init__
方法,类中没有,从父类找,父类没有,从object类中找。 -
既要执行子类的方法,又要执行父类的方法
方法一:不依赖继承 / 父类.func(对象,其他参数)
class Animal(object): type_name = "动物类" def __init__(self,name,sex,age): self.name = name self.age = age self.sex = sex def eat(self): print("吃东西") class Person(Animal): def __init__(self,name,sex,age,mind): Animal.__init__(self,name,sex,age) self.mind = mind def eat(self): super().eat() print(f‘{self.name}会吃饭‘) p1 = Person("张三","男",18,"有思想") p1.eat()
方法二:依赖继承 / 利用super
class Aniaml(object): type_name = ‘动物类‘ def __init__(self,name,sex,age): self.name = name self.age = age self.sex = sex def eat(self): print(‘吃东西‘) class Person(Aniaml): def __init__(self,name,sex,age,mind): {super(Person,self).__init__(name,sex,age)} (完整写法) super().__init__(name,sex,age) self.mind = mind def eat(self): super().eat() print(‘%s 吃饭‘%self.name) class Cat(Aniaml): pass p1 = Person(‘张三‘,‘男‘,18,‘有思想‘) print(p1.__dict__) # 利用super,super().func(参数) # super.__init__执行父类 # 执行父类的__init__方法,重构父类方法.
单继承应用示例:
class Base: def __init__(self,num): self.num = num def func1(self): print(self.num) self.func2() def func2(self): print(222,self.num) class Foo(Base): def func2(self): print(222,self.num) lst = [Base(1),Base(2),Foo(3)] for obj in lst: obj.func1() # 结果: 1 222 1 2 222 2 3 222 3
-
单继承总结:
- 面向对象中super的作用:
? super().func(参数) 重构父类的方法,严格按照对象从属类的mro顺序执行
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:python 面向对象专题(三):继承
文章链接:http://soscw.com/index.php/essay/47043.html
文章标题:python 面向对象专题(三):继承
文章链接:http://soscw.com/index.php/essay/47043.html
评论
亲,登录后才可以留言!