【1.97】类的实例化-- 增删改查

#属性  数据属性   函数属性(方法)
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'}

 

posted @ 2016-05-07 22:36  科学小怪癖  阅读(84)  评论(0)    收藏  举报