python之路——24,,复习1.面向对象编程


复习

1.面向对象编程
思想:角色的抽象,创建类,实例化,操作实例
2.面向对象的关键字
1.类的静态属性,存储在类的命名空间
2.类名.方法(对象),对象.方法
3.对象可以使用静态变量;类不可以使用对象里的属性
3.组合
一个类的对象是另一个对象的属性

学习内容

1.继承
1.一个类可以被多个类继承
一个类可以继承多个父类(python独有)
2.python3 --新式类,没有继承父类默认继承object类
3.子类拥有init时,不需要调用父类;同样,拥有待调用方法,也就不需要调用父类
4.父类中没有的属性(方法),子类中出现,叫派生属性(派生属性)
5.继承——减少代码的重复
6.继承表示一种子类是父类的关系
7.新式类继承顺序:广度优先
print(类名.mro) # 显示类的调用顺序,只在新式类中存在
经典类采用深度优先
8.super的本质:根据调用者节点位置的广度优先顺序来的

代码区

1. 子类,父类调用关系

class Animal:    def __init__(self,animal):        self.animal = animal        print(‘in animal init‘)        self.func()    def eat(self):        print(‘eat something‘)    def drink(self):        print(‘drink water‘)    def func(self):        print(‘in animal func‘)class Dog(Animal):    def __init__(self,kind):        self.kind = kind        print(‘in dog init‘)    def guard(self):        print(‘guard home‘)class Bird(Animal):    def egg(self):        print(‘egg‘)    def func(self):        print(‘in bird func‘)a1 = Dog(‘teddy‘)# print(Dog.animal)a2 = Bird(‘bird‘)

2.

class Animal:    def __init__(self,age):        self.age = age    def eat(self):        print(‘eat something‘)    def drink(self):        print(‘drink water‘)    def func(self):        print(‘in animal func‘)class Dog(Animal):    def __init__(self,age,kind):        Animal.__init__(self,age)        #super().__init__(age)   # 只在新式类中有,python3中所有类都是新式类        self.kind = kind    def guard(self):        print(‘guard home‘)class Bird(Animal):    def egg(self):        print(‘egg‘)    def func(self):        Animal.func(self)        print(‘in bird func‘)a2 = Bird(11)# a2.func()super(Bird,a2).func() # 调用了父类的func

python之路——24

评论关闭