#属性 数据属性 函数属性(方法)
class ChinesePeople:
#类名 要首字母大写 驼峰式
"这是一个中国人的类"
def __init__(self,name,age,gender):
self.mingzi=name
self.nianlin=age
self.xinbie=gender
dang = "gcd"
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))
def play_ball(self):
print("%s 正在打球"%self.mingzi)
#实例化 就只有数据属性 没有函数属性
p1 = ChinesePeople("yaoming",18,"male")
p1.sui_di_tu_tan() #yaoming 正在吐痰
p1.eat_food("包子") #yaoming 正在吃包子
#对象的属性 数据属性
#查看 对象的属性字典 和 数据属性 函数属性
print(p1.__dict__)
#{'mingzi': 'yaoming', 'nianlin': 18, 'xinbie': 'male'}
print(p1.mingzi) #yaoming 查看自己的数据属性
print(p1.cha_dui)
#查看 函数属性 <bound method ChinesePeople.cha_dui of <__main__.ChinesePeople object at 0x018DA890>>
print(p1.cha_dui())
#运行函数属性 就是运行类的函数属性 yaoming 正在插队 返回None 插队就是没有返回值
#增加对象的数据属性
print (p1.__dict__)
#{'mingzi': 'yaoming', 'nianlin': 18, 'xinbie': 'male'}
p1.country="China"
print(p1.country) #China
# 增加对象的一个函数,但是不这样用,因为类就是分开
# 你在这里却要增加一个函数属性 没有太大意义 违背设计初衷
def test():
print("这是增加到对象中的一个函数")
p1.test_zj=test
print(p1.__dict__)
#{'mingzi': 'yaoming', 'nianlin': 18, 'xinbie': 'male', 'country': 'China', 'test_zj': <function test at 0x00C7EF18>}
p1.test_zj() #这是增加到对象中的一个函数
#修改
print(p1.nianlin) #18
p1.nianlin=111111
print(p1.nianlin) #111111
#但是最好不要增减__dict__ 底层的字典结构 会带来代码的不稳定,会有其他方式修改
print(p1.__dict__)
#{'mingzi': 'yaoming', 'nianlin': 111111, 'xinbie': 'male', 'country': 'China', 'test_zj': <function test at 0x01E6EF60>}
p1.__dict__["dang"]="zggcd"
print(p1.__dict__)
#{'mingzi': 'yaoming', 'nianlin': 111111, 'xinbie': 'male', 'country': 'China', 'test_zj': <function test at 0x01E6EF60>, 'dang': 'zggcd'}
print(p1.dang) #zggcd
#删除
print(p1.nianlin) #111111
print(p1.__dict__)
#{'mingzi': 'yaoming', 'nianlin': 111111, 'xinbie': 'male', 'country': 'China', 'test_zj': <function test at 0x01ECEF18>, 'dang': 'zggcd'}
del p1.nianlin
print(p1.__dict__)
#{'mingzi': 'yaoming', 'xinbie': 'male', 'country': 'China', 'test_zj': <function test at 0x01ECEF18>, 'dang': 'zggcd'}