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>}

原文地址:https://www.cnblogs.com/python1988/p/11147530.html