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

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

 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 重新定义的函数

猜你喜欢

转载自www.cnblogs.com/ch2020/p/12425473.html