定義類的屬性,當(dāng)然最簡單最直接的就是在類中定義,例如:
class UserInfo(object):
name='兩點水'
故名思議,就是在構(gòu)造對象的時候,對屬性進行定義。
class UserInfo(object):
def __init__(self,name):
self.name=name
在 Java 中,有 public (公共)屬性 和 private (私有)屬性,這可以對屬性進行訪問控制。那么在 Python 中有沒有屬性的訪問控制呢?
一般情況下,我們會使用 __private_attrs
兩個下劃線開頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問。在類內(nèi)部的方法中使用時 self.__private_attrs
。
為什么只能說一般情況下呢?因為實際上, Python 中是沒有提供私有屬性等功能的。但是 Python 對屬性的訪問控制是靠程序員自覺的。為什么這么說呢?看看下面的示例:
仔細(xì)看圖片,為什么說雙下劃線不是真正的私有屬性呢?我們看下下面的例子,用下面的例子來驗證:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):
def __init__(self, name, age, account):
self.name = name
self._age = age
self.__account = account
def get_account(self):
return self.__account
if __name__ == '__main__':
userInfo = UserInfo('兩點水', 23, 347073565);
# 打印所有屬性
print(dir(userInfo))
# 打印構(gòu)造函數(shù)中的屬性
print(userInfo.__dict__)
print(userInfo.get_account())
# 用于驗證雙下劃線是否是真正的私有屬性
print(userInfo._UserInfo__account)
輸出的結(jié)果如下圖: