码迷,mamicode.com
首页 > 编程语言 > 详细

python之路——24

时间:2019-04-20 19:48:56      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:object类   elf   静态变量   home   子类   方法   col   调用顺序   命名   

复习

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

标签:object类   elf   静态变量   home   子类   方法   col   调用顺序   命名   

原文地址:https://www.cnblogs.com/wan2-0/p/10742138.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!