#encoding:utf-8 ''' > File Name: dog.py > Author: yzxk > Mail: yzxk@openp.net > Created Time: 2016年03月01日 星期二 22时06分59秒 ''' from types import MethodType class Dog(object): name = 'dog' def __init__(self, age): self.age = age def setname(self,name): self.name = name def getname(self): return self.name d1 = Dog(5) d2 = Dog(10) print 'd1.name:',d1.name #对象属性找不到时会找类属性,指向类属性所在地址 print 'd1.age:',d1.age #d1.age是对象的属性 print 'd2.name:',d2.name print 'd2.age:',d2.age print 'Dog.name:',Dog.name #print 'Dog.age:',Dog.age #对象属性无法查找类属性 print '\n' #d1.name = 'abc' #如果修改了对象属性,而对象属性指向类属性,那么就会在对象内存中复制一个同名类属性值并指向它 #d1.setname('abc') #同上 #d1.age = 6 #修改了对象属性只会改变该对象内存值 #Dog.name = 'abc' #修改了类属性,那么该类所有对象值都会改变 print 'd1.name:',d1.name print 'd1.getname():',d1.getname() print 'd1.age:',d1.age print 'd2.name:',d2.name print 'd2.getname():',d2.getname() print 'd2.age:',d2.age print 'Dog.name:',Dog.name #print 'Dog.getname():',Dog.getname() #类属性无法访问对象属性 #print Dog.age #同上 print '\n' def set_color(self, color): self.color = color Dog.set_color = MethodType(set_color, Dog) #类动态增加的方法,每个对象都有 #d1.color = 'blue' #对象可以动态添加对象属性,无法被其他对象访问 d1.set_color('blue') #如果不是动态增加的方法,这里表示的就是对象的属性,然而这里的self.color表示类属性 print 'd1.color:',d1.color print 'd2.color:',d2.color
Sign in to make a reply
云中仙客_