实例只有数据属性,没有函数属性 实例没有函数属性,只有类有函数属性
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 重新定义的函数