直接上code:
#ex_class_attr.py
self_file = __file__
#实例对象 能访问实例数据属性,也可以访问类数据属性
#类 能访问类数据属性,不能访问实例数据属性
#一般情况下,实例对象不要通过访问/修改类数据属性 来实现实例属性可以完成的功能!
print "\n=====类数据属性,和实例数据属性======"
class CCar:
_ver = "Ver1.0" #类数据属性
def __init__(self, color, age, money):
self._color = color #实例数据属性
self._age = age #实例数据属性
self._money = money #实例数据属性
print "create obj(color:%s, age:%d, money:%d)" % \
(self._color, int(self._age), int(self._money))
def updateObjectAttr(self, color, age, money):
self._color = color
self._age = age
self._money = money
def updateClassAttr(self, version):
CCar._ver = version
def dumpObjectAttr(self):
print "dump obj(color:%s, age:%d, money:%d)" % \
(self._color, int(self._age), int(self._money))
def dumpClassAttr(self):
print "dump class(ver:%s)" % CCar._ver
car = CCar("red", 1, 23)
car.dumpObjectAttr()
car.dumpClassAttr()
print car._ver #Ver1.0 #实例尝试访问类属性_ver,访问成功(也可以修改其值,不建议由对象修改类数据属性的数值)
print car._color #red #实例尝试访问实例属性_color,访问成功
print car._age #1
print car._money #23
print CCar._ver #Ver1.0 #类尝试访问类属性_ver,访问成功(也可以修改其值,建议由类修改类属性的数值)
print CCar._color #AttributeError!类尝试访问实例属性,访问失败,不能访问!
#Traceback (most recent call last):
# File "C:\Python27\ex_class_attr.py", line 36, in <module>
# print CCar._color
#AttributeError: class CCar has no attribute '_color'
print "\n exit %s" % self_file
编译执行:
(end)