私有属性,私有方法
主要通用 __
添加到属性名前,可以让该属性得到一个保护
class WuDang:
name = "武当"
__kongfu_list = ["aaa", "bbb", "ccc"]
wd = WuDang()
print(wd.name)
print(wd.__kong_list)
类的继承
定义类的时候,如果希望继承自另外一个类
可以通过
class 类名(父类的类名):
定义普通类,有两种方式
如果需要继承的话,只有这一种
继承后的效果
当前的类,拥有了父类的公有属性和公有方法
类的继承,提高了代码的效率,减了重复的代码
专业术语
父类是子类的基类,子是父类的派生类,子类从父类派生
方法的重写
如果父类的方法,与需求不符合
那么就在当前(自己的类)中重新写一个方法
在自己的方法中,定义需要的功能
注意
对于重写而言
方法名一定是与父类中方法同名
初始化对象属性
如果一个对象在创建的时候,需要有对象的属性
那么,我们应该在init方法中进行初始化
初始化操作主要的处理是
对象.属性 = 值
问题,值从哪里来?
类在进行实例化时,往类名后面的括号中,传递数据
t = Cat(‘汤姆’)
通过这种方式传参
对象 = 类名(参数)
参数会传送到init方法中,按照位置对应的关系进行给值
初始化方法定义的时候
def __init__(self, 形参1,形参2):
我们在外部把类实例化对象时传参这样传
对象 = 类名(实参1,实参2)
通过这种方式传递参数
实参1的数据,会传递给形参1
实参2的数据,会传递给形参2
不是所有的对象属性都是要传参的
有的对象属性,可以通过计算获取
例如,房屋摆放家具案例中的剩余面积,用总面积- 已摆放的家具面积
in
not in
is
is not
身份运算符
进行数据在内存中地址的验证
In [4]: a = [1,2,3]
In [5]: b = a
In [6]: id(a)
Out[6]: 2058783955976
In [7]: id(b)
Out[7]: 2058783955976
In [8]: a is b
Out[8]: True
In [10]: a
Out[10]: [1, 2, 3]
In [11]: b
Out[11]: [1, 2, 3]
In [12]: c = [1,2,3]
In [13]: id(c)
Out[13]: 2058782337992
In [14]: id(a)
Out[14]: 2058783955976
In [15]: a is c
Out[15]: False
区分 == 验证 与 身份证,验证时关注的点
In [17]: a
Out[17]: [1, 2, 3]
In [18]: b
Out[18]: [1, 2, 3]
In [19]: c
Out[19]: [1, 2, 3]
In [20]: a == c
Out[20]: True
In [21]: a is c
Out[21]: False
定义类的两种方式
# 定义一个类,创建类对象
# 1,完整版 class 类名(object): #如果类有继承其它的类,其它类的类名就写在括号中
# 2,简单版class 类名: # 如果类没有继承其它的类的话,我们使用这一种
class Cat:
pass
创建对象
接收对象的变量名 = 类名()
p = Plane()
初始化方法init
类名()
创建对象
被动触发
创建对象的同时,会触发一个init方法
对象创建出来的时候,会执行一次init方法
利用这个特性,我们可以在init方法中添加一些东西
婴儿出生的哭
游戏开始时的初始化等待
对象消失时del方法
对象从内存中被注销,被释放内存空间的时候,会自动触发的方法
1,主动删除
del 对象
del(对象)
2,游戏结束,代码运行到最终
触释器会清空所有资源,清空内存中存放的一切数据
清空一切时,自然也会清空对象
def __del__(self):
# print('del')
words = [
"我还会回来的",
"我还不想死",
"下次我会更劢害的"
]
idx = random.randint(0,2)
print(words[idx])
打印对象时的输出控制str方法
def __str__(self):
return "abc"
str方法中
返回的是什么内容
打印这个对象时,会就会显示什么内容
给对象添加属性
对象.属性 = 值
给对象添加属性的时机
-
初始化的时候
小孩一出生,肯定有一个编号,这个编号,就是相当于小孩对象的属性
小孩一出生,身高,体重,对象属性
上述的对象属性,创建的时机
应该是在初始化的时候
也就是说
是在对象被创建的时候,把属性赋给对象
.
可以利用init方法,给对象添加需要的对象属性
.
-
需要的时候
小孩长大了,参加培训
获得了技能
那么
这种技能,属于后面滔天大罪 中的属性
因此,这样一样的对象属性
不在初始化方法中赋值
可以在外面给他添加
定义类的两种方式
# 定义一个类,创建类对象
# 1,完整版 class 类名(object): #如果类有继承其它的类,其它类的类名就写在括号中
# 2,简单版class 类名: # 如果类没有继承其它的类的话,我们使用这一种
class Cat:
pass
创建对象
接收对象的变量名 = 类名()
p = Plane()
初始化方法init
类名()
创建对象
被动触发
创建对象的同时,会触发一个init方法
对象创建出来的时候,会执行一次init方法
利用这个特性,我们可以在init方法中添加一些东西
婴儿出生的哭
游戏开始时的初始化等待
对象消失时del方法
对象从内存中被注销,被释放内存空间的时候,会自动触发的方法
1,主动删除
del 对象
del(对象)
2,游戏结束,代码运行到最终
触释器会清空所有资源,清空内存中存放的一切数据
清空一切时,自然也会清空对象
def __del__(self):
# print('del')
words = [
"我还会回来的",
"我还不想死",
"下次我会更劢害的"
]
idx = random.randint(0,2)
print(words[idx])
打印对象时的输出控制str方法
def __str__(self):
return "abc"
str方法中
返回的是什么内容
打印这个对象时,会就会显示什么内容
给对象添加属性
对象.属性 = 值
给对象添加属性的时机
-
初始化的时候
小孩一出生,肯定有一个编号,这个编号,就是相当于小孩对象的属性
小孩一出生,身高,体重,对象属性
上述的对象属性,创建的时机
应该是在初始化的时候
也就是说
是在对象被创建的时候,把属性赋给对象
.
可以利用init方法,给对象添加需要的对象属性
.
-
需要的时候
小孩长大了,参加培训
获得了技能
那么
这种技能,属于后面滔天大罪 中的属性
因此,这样一样的对象属性
不在初始化方法中赋值
可以在外面给他添加
获取对象属性的值
对象.属性 ----> 可以得到对象的属性的值
调用对象的方法
对象.方法名() -----> 让对象的方法运行起来