python 基础——私有属性

私有属性

python 私有属性以两个下划线开头。

python 私有属性只能在类内部访问,类外面访问会出错。

python 私有属性之所以不能在外面直接通过名称来访问,其实质是因为 python 做了一次名称变换。

保护属性

python 保护属性更多的是一种语法上的标识,用来提醒直接修改改对象时候要小心。

python 保护属性和公开属性都可以在类外面直接访问。

class NewClass(object):
    def __init__(self):
        self.public_field = 5    # public
        self.__private_field = 10    # private
        self._protect_field = 99    # protect
    
    def __private_method(self):
        print "I am private method"
    
    def public_method(self):
        print "I am public method"

test = NewClass()

print test.public_field
test.public_method()

print test.__dict__    # {'_NewClass__private_field': 10, 'public_field': 5}

# 使用变换过后的名称访问,Success
print test._NewClass__private_field    # 10    
test._NewClass__private_method()    # I am private method 

# 直接访问,Fail
print test.__private_field    # AttributeError: 'NewClass' object has no attribute '__private_field'
test.__private_method()    # AttributeError: 'NewClass' object has no attribute '__private_method'
        

 

posted @ 2016-08-29 15:49  弋痕夕的残影  阅读(2808)  评论(0编辑  收藏  举报