Python-继承
-
单继承,多继承
-
在Python2中:python2.2之前都是金典类,python2.2之后出现了新式类,继承object就是新式类
在python3:只有新式类,不管你继不继承object都是新式类
class Animal:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def eat(self):
print("吃")
class Human(Animal):
pass
class Dog(Animal):
pass
# 通过之类的类名使用父类的属性和方法
Human.eat(1) # 通过类名使用父类方法时要添加实参
Human.__init__(Human,"老大",22,"男")
# 通过之类的对象使用父类的属性和方法
p = Human("老大",22,"男")
查找顺序(不可逆,就近原则):
-
通过子类,类名使用父类属性或方法(查找顺序):当前类,当前类的父类,当前类父类的父类 ---->
-
通过子类对象使用父类的属性或方法(查找顺序):先找对象,实例化这个对象的类,当前类的父类
继承的优点:
1.减少重复代码
2.结构清晰,规范
3.增加耦合性(不在多,在精)
方法一:不依赖(不需要)继承
# 在本类的__init__方法中,在使用另一个类名的__init__方法进行初始化
def __init__(self,name,age,sex):
A.__init__(self,name,age)
self.sex = sex
方法二:依赖(需要)继承
def __init__(self,name,age,sex): # 初始化方法
super().__init__(name,age) # 重构方法
self.sex = sex
多继承就是继承多个父类
金典类:
-
多继承时从左向右执行
-
(深度优先)左侧优先,一条路走到头,找不到回到起点向右查询
新式类:c3算法
mro(Child(Base1,Base2)) = [ Child ] + merge( mro(Base1), mro(Base2), [ Base1, Base2] )
print(类名.mro())
金典类不能使用mro,只有新式类才能使用mro
面向对象三大特征
1.继承
2.封装:将一些代码或数据存储到某个空间中,如:函数,对象,类
3.多态:多种形态,在python中默认就是多态
print带色
开头格式:\033[
结尾格式:\033[0m
开头部分三个参数:
-
显示方式
-
字体颜色
-
背景色
print("\033[1;35m字体变色,但无背景色 \033[0m")
print("\033[1;35;43m字体变色,有背景色 \033[0m")
浙公网安备 33010602011771号