0%

继承

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# -*- coding:utf-8 -*-
# @Time :2022/6/20 10:06
# @SOFTWARE :python基础

# 一个类除了自身拥有的属性和方法外,还获取了另外一个类的成员属性和方法,是一种继承关系,
# 被继承的类叫做父类(基类,超类)继承的类叫做子类(衍生类)
# 在python中所有类都继承object这个父类
# 继承:1.单继承 2.多继承

class Human(object):
eye = "黑色"
def jump(self):
print("能上树")
def __makebaby(self):
print("能繁衍")

class son(Human):
pass

# 子类继承父类之后,子类可以调用父类的公有成员,不能调用私有成员
obj = son()
obj.jump()
# obj.__makebaby() AttributeError: 'son' object has no attribute '__makebaby'

# 子类继承父类之后,子类可以改写父类的公有成员



# 多继承
# 1.
class Father():
property ="才高八斗"
def f_hobby(self):
print("吃喝玩乐")

class Mother():
property = "貌美如花"
def m_hobby(self):
print("琴棋书画")

class Daughter(Father,Mother):
pass

obj = Daughter()
print(obj.property)
obj.f_hobby()


# 2.
class Father():
property ="才高八斗"
def f_hobby():
print("吃喝玩乐")

class Mother():
property = "貌美如花"
def m_hobby():
print("琴棋书画")

class Son(Father,Mother):
# 用类调用成员
def skill(self):
Father.f_hobby()
print(Mother.property)
def skill2(self):
print(super())
print(super().property)
print(super().m_hobby())

obj2 = Son()
obj2.skill()
obj2.skill2()



# super本身是一个类,super()是一个对象,用语调用父类的绑定方法
# suoer()只应用于绑定方法中,默认自动传递self对象,(前提:super所在作用域存在self)
# super用途:解决复杂的多继承调用顺序
# 只调用父类的相关成员,不调用自己的


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# -*- coding:utf-8 -*-
# @Time :2022/6/20 9:46
# @SOFTWARE :python基础

# 魔术方法
# 1. __init__魔术方法(构造方法)
"""
触发时机:实例化对象,初始化的时候触发
功能:为对象添加成员
参数:参数不固定,至少是一个self参数
返回值:无
"""
# 基本语法
class MyCar():
def __init__(self):
print("构造方法被触发")

obj = MyCar()

# 2.带有多个参数的构造方法
class Myclass():
def __init__(self,num):
self.num = num

# 3.类可以是一个,对象可以是多个