首页 > 其他 > 详细

面向对象2 类属性的增删改查

时间:2020-03-06 11:52:19      阅读:49      评论:0      收藏:0      [点我收藏+]

实例只有数据属性,没有函数属性             实例没有函数属性,只有类有函数属性

 1 class Chinese:
 2     dang =   # 类属性
 3 
 4     def __init__(self, name, age, gender):
 5         print(我是初始化函数,我开始运行了)
 6         self.mingzi = name  # 实例属性
 7         self.nainling = age
 8         self.xinbie = gender
 9         print(我运行结束了)
10 
11     def sui_tan():
12         print(随地吐痰)
13 
14     def chadui(self):
15         print(self)  # 证明self就是实例本身
16         print(插队到前面)
17 
18 
19 p1 = Chinese(哈哈, 18, femail)
20 print(p1.__dict__)  # 查看实例的字典
21 print(Chinese.__dict__)
22 print(p1.dang)
23 Chinese.sui_tan()
24 Chinese.chadui(p1)    # 把实例传进去就可以运行
25 p1.chadui()    # class自动将p1当做实参传进函数,就可以运行
26 输出:
27 我是初始化函数,我开始运行了
28 我运行结束了
29 {mingzi: 哈哈, nainling: 18, xinbie: femail}
30 {__module__: __main__, dang: , __init__: <function Chinese.__init__ at 0x006AE2F8>, sui_tan: <function Chinese.sui_tan at 0x006AE2B0>, chadui: <function Chinese.chadui at 0x006AE268>, __dict__: <attribute __dict__ of Chinese objects>, __weakref__: <attribute __weakref__ of Chinese objects>, __doc__: None}
31 32 随地吐痰
33 <__main__.Chinese object at 0x00691FD0>
34 插队到前面
35 <__main__.Chinese object at 0x00691FD0>
36 插队到前面

定义函数属性   命名 动词加名词

 1 class Chinese:
 2     dang =   # 类属性
 3 
 4     def __init__(self, name, age, gender):
 5         print(我是初始化函数,我开始运行了)
 6         self.mingzi = name  # 实例属性
 7         self.nainling = age
 8         self.xinbie = gender
 9         print(我运行结束了)
10 
11     def sui_tan():
12         print(随地吐痰)
13 
14     def chadui(self):
15         print(self)  # 证明self就是实例本身
16         print(插队到前面)
17 
18 
19 Chinese.nihao = haha  # 增加类属性
20 print(dir(Chinese))  # 查看类属性名字
21 print(Chinese.nihao)
22 p1 = Chinese(你好, 123, sdf)
23 print(p1.nihao)
24 del Chinese.dang
25 try:
26     if Chinese.dang:
27         print(存在)
28     else:
29         print(已删除)
30 except Exception as f:
31     print(wu)
32 输出:
33 [__class__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__, __weakref__, chadui, dang, nihao, sui_tan]
34 haha
35 我是初始化函数,我开始运行了
36 我运行结束了
37 haha
38 wu

重新定义函数,或者修改函数

 1 class Chinese:
 2     def __init__(self, name):
 3         self.name = name
 4 
 5     def play_ball(self):
 6         print(%s 正在打篮球 % self.name)
 7 
 8 
 9 p1 = Chinese(小白)
10 p1.play_ball()
11 
12 
13 def eat_food(self, food):
14     print("%s 正在吃 %s" % (self.name, food))
15 
16 
17 Chinese.eat = eat_food
18 print(dir(Chinese))
19 p1.eat(cai)
20 
21 
22 def test(self):
23     print(重新定义的函数)
24 
25 
26 Chinese.play_ball = test
27 p1.play_ball()
28 输出:
29 小白 正在打篮球
30 [__class__, __delattr__, __dict__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __gt__, __hash__, __init__, __init_subclass__, __le__, __lt__, __module__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__, __weakref__, eat, play_ball]
31 小白 正在吃 cai
32 重新定义的函数

 

面向对象2 类属性的增删改查

原文:https://www.cnblogs.com/ch2020/p/12425473.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!