Python---面向对象的三大特征
# 面向对象的三大特征
- 继承
- 封装
- 多态
# 继承
- 子类可以使用父类定义的内容或者行为等
- 继承的实现
- 父类:基类,超类:被继承的类, Base Class, Super Class
- 子类:有继承行为的类
- 所有类都必须有一个父类
- 如果没有,则默认为是object的子类
- 子类可以有多个父类
----------------------------------------------------
# 所有类必须有父类
# 默认是object
class Person1():
pass
class Person2(object):
pass
class Person():
name = "NoName"
age = 0
#父类写在类定义的时候的括号里
class Teacher(Person):
pass
t = Teacher()
print(t.name)
class Bird():
fly = "Yes, we can"
def flying(self):
print("飞呀飞呀")
class BirdMan(Person, Bird):
pass
bm = BirdMan()
bm.flying()
print(bm.name)
#### issubclass检测是否是子类
#### 可以用来检测两个类的父子关系
## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系
print(issubclass(BirdMan, Bird))
print(issubclass(BirdMan, Person))
print(issubclass(BirdMan, Teacher))
--------------------------------------------------
# 构造函数
# 在函数实例化的时候调用的一个函数
# 自动调用
# 要求,第一个参数必须有,一般推荐self
# 不能有return
#构造函数默认继承
class Person():
def __init__(self, name, age):
print("Person=({}, {})".format(name, age))
class Teacher(Person):
pass
t = Teacher()
---------------------------------
# 所有类必须有父类
# 默认是object
class Person1():
pass
class Person2(object):
pass
class Person():
name = "NoName"
age = 0
#父类写在类定义的时候的括号里
class Teacher(Person):
pass
t = Teacher()
print(t.name)
class Bird():
fly = "Yes, we can"
def flying(self):
print("飞呀飞呀")
class BirdMan(Person, Bird):
pass
bm = BirdMan()
bm.flying()
print(bm.name)
## help(issubclass())
#### issubclass检测是否是子类
#### 可以用来检测两个类的父子关系
## 利用刚才定义的Bird, Birdman, Person, Teacher, 检测父子关系
print(issubclass(BirdMan, Bird))
print(issubclass(BirdMan, Person))
print(issubclass(BirdMan, Teacher))
#### --------------------------------------
### 构造函数的继承
### 原则上,构造函数默认继承
# 构造函数
# 在函数实例化的时候调用的一个函数
# 自动调用
# 要求,第一个参数必须有,一般推荐self
# 构造函数的调用时间:一般认为在实例化的时候第一个被调用
# 一般不手动调用,实例化的时候自动调用,参数需写入类名称后面的括号中
#构造函数默认继承
class Person():
def __init__(self, name, age):
print("Person=({}, {})".format(name, age))
class Teacher(Person):
pass
t = Teacher("刘大拿", 28)
# ----------------------------
class Bird():
def __init__(self):
print("我被调用了")
return None
b = Bird()
# 构造函数2
class Person():
def __init__(self, name, age):
print(name, age)
p = Person("刘大拿", 19)