首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python面向对象之继承

继承:

单继承和多继承

1.初识

class Father(object): #如果不写object默认继承

pass

class Son(Father): #括号里面的称为:父类或基类或超类 括号外面的称为:子类或派生类

pass

class Animal:

breath = '呼吸'

def __init__(self, name, sex, age):

self.name = name

self.sex = sex

self.age = age

def eat(self):

print(self)#111 #

print('动物都需要进食....')

class Person(Animal):

pass

print(Person.breath)#呼吸

Person.eat(111)#动物都需要进食....

p1 = Person('Jake', '男', 20)

print(p1.breath)#呼吸

print(p1)#

p1.eat()#动物都需要进食....

结果:

呼吸

111

动物都需要进食....

呼吸

动物都需要进食....

总结:

子类以及子类实例化的对象,可以访问父类的任何方法和变量。

类名可以访问父类的所有内容。

子类实例化的对象也可以访问父类所有内容。

只执行父类的方法:子类中不要定义与父类同名的方法

只执行子类的方法:在子类创建这个方法.

既要执行子类的方法,又要执行父类的方法?

有两种解决方法.1.通过类名。2.通过super()函数

1,Animal.__init__(self, name, sex, age)

2,super().__init__(name,sex,age)

class Animal:

breath = '呼吸'

def __init__(self, name, sex, age):

self.name = name

self.sex = sex

self.age = age

def eat(self, argv):

print('%s吃%s' % (self.name, argv))

class Person(Animal):

def __init__(self, name,sex,age,wing):

# Animal.__init__(self, name, sex, age)

super().__init__(name,sex,age) # super(Brid,self).__init__(name,sex,age)

self.wing = wing

def eat(self,argv):

super().eat(argv)

print('吃...')

p1 = Person('鹦鹉','男',20,'绿翅膀')

print(p1.__dict__)

p1.eat('金蝉')

结果:

{'name': '鹦鹉', 'sex': '男', 'age': 20, 'wing': '绿翅膀'}

鹦鹉吃金蝉

吃...

2.进阶

类: 经典类, 新式类

新式类: 凡是继承object类都是新式类.

python3x 所有的类都是新式类,因为python3x中的类都默认继承object.

经典类: 不继承object类都是经典类

python2x:(既有新式类,又有经典类) 所有的类默认都不继承object类,

所有的类默认都是经典类.你可以让其继承object.

单继承: 新式类,经典类查询顺序一样.

多继承:

新式类: 遵循广度优先.

经典类: 遵循深度优先.

多继承的新式类 广度优先 : 一条路走到倒数第二级,判断,如果其他路能走到终点,则返回走另一条路.如果不能,则走到终点.

多继承的经典类 深度优先 : 一条路走到底.

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180808A0AOJG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券