day6-类属性、析构函数

  1 class dog(object):
  2     "dog class"
  3 
  4     # 公有属性,所属这个类的所有对象都可以访问
  5     species = "husky"
  6  
  7     def __init__(self,name,age):
  8         # 类的成员变量
  9         # 普通属性
 10         self.name = name
 11         self.age = age
 12         # 私有属性,不可访问,不可修改,若想访问,参考get_sex()
 13         self.__sex = 'man'
 14                 
 15     def sayhi(self):
 16         print("the dog {0} is sayhi".format(self.name))
 17  
 18     # 传入一个参数,参数名:food
 19     def eat(self,food):   
 20         print("the dog name is {0},its food is {1}".format(self.name,food))
 21 
 22     def update_age(self,update_age):
 23         self.age = update_age
 24 
 25     # 对外提供只读接口访问
 26     def get_sex(self):
 27         # 返回私有属性
 28         return self.__sex
 29 
 30     # 定义析构函数
 31     def __del__(self):     
 32         print("del.....run...")
 33 
 34 # 实例化对象       
 35 d = dog("alex", 18)
 36 # 调sayhi方法
 37 d.sayhi()
 38 # 调eat方法
 39 d.eat("hotdog")  
 40 
 41 print("-"*30)
 42 # 在类的方法中或者类的外面都可以修改类的属性
 43 # 在类里修改
 44 d.update_age(22)
 45 print(d.age)
 46 # 在外部修改
 47 d.age = 24
 48 print(d.age)
 49 
 50 print("-"*30)
 51 # 在类中定义了访问私有属性的函数,所以此处可访问,但不能修改
 52 print(d.get_sex())
 53 
 54 # 强制访问私有属性:对象名._类名__属性名
 55 # 强制访问
 56 print(d._dog__sex)
 57 # 强制修改
 58 d._dog__sex = "woman"
 59 print(d._dog__sex)
 60 
 61 print("-"*30)
 62 d2 = dog('lucky', 5)
 63 
 64 # 类似于name的属性是每个对象独立的属性,并不共享
 65 print(d.name, d2.name)
 66 
 67 # 访问公有属性
 68 print(d.species, d2.species)
 69 # 修改d2的公有属性
 70 d2.species = "teacup"
 71 print(d.species, d2.species)
 72 
 73 # 修改类的公有属性
 74 dog.species = "pastoral"
 75 print(d.species, d2.species)
 76 
 77 # 由此可以看出:
 78 # 访问公有属性时,会先去对象内部的成员属性里找,如果没有,则去类的公共属性找,
 79 # 如果再没有,会去父类找,这里d2在对象内部定义了一个species,直接访问,
 80 # 而d对象内部没有species属性,则去dog类的公有属性查找,此时dog的公有属性已经改变,
 81 # 输出的自然也是改变后的值
 82 
 83 print("-"*30)
 84 # del方法会清除对象的门牌号,引用一旦清除,析构函数会自动执行
 85 # 适用于关闭客户端连接等收尾工作
 86 del d
 87 
 88 
 89 the dog alex is sayhi
 90 the dog name is alex,its food is hotdog
 91 ------------------------------
 92 22
 93 24
 94 ------------------------------
 95 man
 96 man
 97 woman
 98 ------------------------------
 99 alex lucky
100 husky husky
101 husky teacup
102 pastoral teacup
103 ------------------------------
104 del.....run...

 

posted @ 2017-06-26 17:30  不知所以  阅读(93)  评论(0)    收藏  举报