![](/img/trans.png)
[英]Are the variables declared without self independent in Python class methods? or Is it static?
[英]Can static variables be declared as private in python?
class Applicant:
applicant_id_count=1000
application_dict={
"A":0,
"B":0,
"C":0
}
def __init__(self,applicant_name):
self.__applicant_name=applicant_name
self.__applicant_id=None
self.__job_band=None
我需要在上面的類中將靜態變量(即application_dict
和applicant_id_count
作為私有靜態變量。 還是在python中有這樣的事情?
在Python中,您始終可以訪問所有變量。 但是,對於此類和屬性的命名存在約定。 您可以使用PEP 8中的__
前綴(兩個下划線)。 Python __foo
諸如__foo
之類的變量名稱進行__foo
以便在包含它們的類之外的代碼中不容易看到它們。 另外,如果要使用受保護的變量范圍,則可以使用_
前綴(一個下划線)。
Python沒有訪問修飾符。 如果要從實例或類外部訪問實例(或類)變量,則始終可以這樣做。
就是說,有一個使用下划線(_)的約定,大多數開發人員都遵循該約定來表示變量/方法是私有的。 單個下划線是一種慣例,可以說這是一個私有變量,但實際上並不會更改訪問權限。 例:
class Applicant:
_applicant_id_count = 1000
Applicant._applicant_id_count # equals to 1000
如果出於某種原因要模擬私有變量,則可以始終使用__
前綴。 Python會對變量的名稱進行修飾,以使它們不容易看到。 例:
class Applicant:
__applicant_id_count=1000
當有人嘗試直接訪問它時,您將收到以下錯誤:
Applicant.__applicant_id_count
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class Applicant has no attribute '__applicant_id_count'
有人可以破解並使用變量,如下所示:
Applicant._Applicant__applicant_id_count # prints out 1000
您可以在此處了解更多信息: https : //www.geeksforgeeks.org/private-variables-python/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.