标签:direct sel 属性 word 修改 obj .property 成功 strong
1:实例属性:最好在init(self,...)中初始化
内部调用时都需要加上self.
外部调用时用instancename.propertyname
2:类属性(公有属性):
在init()外初始化
在内部用classname.类属性名调用
外部既可以用classname.类属性名又可以用instancename.类属性名来调用
如果创建实例的时候实例里没有这个属性而公有属性里有,则会链接调用类属性,否则会调用实例自己的属性。
class Test(object):
name = ‘hello word‘
a = Test()
print Test.name # 通过类进行访问
print a.name # 通过实例进行访问
我们发现都是可以访问的。
但是,如果我们试图修改这个属性的话:
class Test(object):
name = ‘hello word‘
a = Test()
Test.name = ‘python good‘ # 通过类进行修改
print Test.name
print a.name
我们发现两者都修改成功了。
如果通过实例来修改属性的话:
class Test(object):
name = ‘hello word‘
a = Test()
a.name = ‘python good‘ # 通过实例进行修改
print Test.name
print a.name
Test.name没有修改 成功
a.name成功修改
3:私有属性:
1):单下划线_开头:只是告诉别人这是私有属性,外部依然可以访问更改
2):双下划线__开头:外部不可通过instancename.propertyname来访问或者更改
实际将其转化为了_classname__propertyname
class Flylove:
price = 123
def __init__(self):
self.__direction = ‘go beijing .‘
zIng = ‘wait car,many person‘
if __name__ == ‘__main__‘:
print Flylove.price
fly = Flylove()
print fly._Flylove__direction
上面代码是直接访问私有属性的强制措施
标签:direct sel 属性 word 修改 obj .property 成功 strong
原文地址:http://blog.51cto.com/13522822/2065979