2019年7月7日 类属性的增删改查
class Chinese: 'chinese people 的类' dang='GCD' #定义来属性 def __init__(self,name,age,gender):#self 代表自身,初始化函数,class 中只要把名字定义为__init__,自动去运行,函数必须要有self 参数 self.mingzi=name #定义类名字属性,并封装到self中 self.nianji=age self.xingbie=gender #自动return def sui_di_tu_tan(self):#将自身传递给参数 print('%s随地吐痰'%self.mingzi) def cha_dui(self): print('%s插到了前面'%self.mingzi) def eat_food(self,food): print('%s正在吃%s'%(self.mingzi,food)) p1=Chinese('zyk',18,'man') p1.sui_di_tu_tan() p1.cha_dui() p1.eat_food('shit') # 数据属性 #查看 print(Chinese.dang) #修改 Chinese.dang='GMD' print(Chinese.dang) #删除 del Chinese.dang # print(Chinese.dang) #会报错 #增加 Chinese.dang='ZGGCD' print(Chinese.dang) Chinese.country='China' print(Chinese.country) # 函数属性的增删改查 # 增加 def eat_today(self,food): print('%s今天吃的是%s'%(self.mingzi,food)) Chinese.eat_today=eat_today#传递函数地址 p1.eat_today('newshit') Chinese.eat_today(p1,'dogshit') # 实例属性的增删改查 p2=Chinese('zyk2',99,'man') # 查看 print(p2.mingzi)#实例的数据属性 print(p2.eat_today)#实例调用类的函数属性,但是实例中没有函数属性 # 增加 p2.aihao='basketball' print(p2.aihao) p2.__dict__['sex']='male'#不推荐 #函数属性也能做增删改查,但是不推荐 def test(self): print('实例函数属性',self) p2.test=test #传递的是test函数的地址 p2.test(p2)#因为调用实例自己的,所以不会自动传递self,如果是调用class内的函数,则会自动传递self print(p2.__dict__) # 修改 p2.nianji=88 print(p2.nianji) # 删除 del p2.sex print(p2.__dict__)
>>>
zyk随地吐痰
zyk插到了前面
zyk正在吃shit
GCD
GMD
ZGGCD
China
zyk今天吃的是newshit
zyk今天吃的是dogshit
zyk2
<bound method eat_today of <__main__.Chinese object at 0x10220c240>>
basketball
实例函数属性 <__main__.Chinese object at 0x10220c240>
{'mingzi': 'zyk2', 'nianji': 99, 'xingbie': 'man', 'aihao': 'basketball', 'sex': 'male', 'test': <function test at 0x10209e158>}
88
{'mingzi': 'zyk2', 'nianji': 88, 'xingbie': 'man', 'aihao': 'basketball', 'test': <function test at 0x10209e158>}