首页 技术 正文
技术 2022年11月20日
0 收藏 669 点赞 2,492 浏览 2012 个字
继承是创建新类的一种方式,目的就为了减少代码。表达了子类是父类的关系,比如狗是动物,教授是老师
一个类可以多个类继承,所有语言都是这样的
一个类可以继承多个父类 ,只有python支持多继承
子类可以找到父类,但是父类不知道自己几个子类的,毕竟你创建的时候才不会知道会有几个子类吧
子类只会和父类联系,彼此之间不联系
 class A:pass                 # 父类,基类,超类
class B:pass # 父类,基类,超类
class A_son (A,B):pass # 子类
class AB_son(A,B):pass # 子类
print(A_son.__bases__) # 查看父类
# (<class '__main__.A'>, <class '__main__.B'>)
print(A.__bases__) # 没有父类的类默认属于 "object" 祖宗类
# (<class 'object'>,)
 # 狗类    看门
# 鸟类 下蛋
# 动物,吃,喝,跑
# class Animal:
def __init__(self):
print("执行 Animal__init__")
self.func()
def eat(self):
print("it's can eat")
def run(self):
print("it's can run")
def dirnk(self):
print("it's can drink")
def func(self):
print("Animal__init__.func")
class Dog(Animal):
def guard(self):
print("it's can guard")
def func(self):
print("Dog.func")
class brid(Animal):
def egg(self):
print("it's can egg")

 人狗实例
 class Animal:
def __init__(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp
def eat(self):
print("%s吃药回血" %self.name)
self.hp += 100
class Dog(Animal):
def __init__(self,name,aggr,hp,kind):
Animal.__init__(self,name,aggr,hp) # 调用父类,要带上全部的参数
self.kind = kind   # 派生属性
def bite(self, person):
person.hp -= self.aggr
def eat(self): # 狗吃药回血还能长牙
Animal.eat(self)   # 吃药基础技能继续调用父类
self.teech = 2 # 长牙了 class Person(Animal):
def __init__(self,name,aggr,hp,sex,money):
Animal.__init__(self,name,aggr,hp) # 调用父类
self.sex = sex # 派生属性
self.money = money # 派生属性
def attact(self, dog):
dog.hp -= self.aggr
suyang = Dog("苏阳",1,1,"吉娃娃")
yangtuo = Person("羊驼",100,100,"天才",10000)
suyang.eat()   # 苏阳吃药回血
print(suyang.hp)   #
yangtuo.attact(suyang)
print(suyang.hp)   #
suyang.eat()   # 苏阳吃药回血
print(suyang.teech) # 2   # 狗独有的方法长牙

总结:
父类中没有的方法子类有,叫做派生方法
父类中没有的方法子属性,叫做派生属性
只要子类的对象调用,子类有一定用子类,子类没有才用父类,如果都没有,报错
如果还想用父类的,直接单独父类调用吧,
单独调用父类方法,记得自己传self参数
super().func 不需要自己传self了也可以实现 fulei.func的功能
 lass Animal:
def __init__(self,name,aggr,hp):
self.name = name
self.aggr = aggr
self.hp = hp
def eat(self):
print("%s吃药回血" %self.name)
self.hp += 100
class Dog(Animal):
def __init__(self,name,aggr,hp,kind):
super().__init__(name,aggr,hp) # 另一种方法调用父类,更加简单一些,省略了类名,对象名
# 只在新式类中才有,python3中所有的类都是新式类
self.kind = kind # 派生属性 suyang = Dog("苏阳",1,1,"吉娃娃")
print(suyang.name)
super(Dog,suyang).eat() # super可以在外面调用父类的方法,不仅仅局限于子类中调用父类
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,088
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,565
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,413
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,186
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,822
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,905