簡體   English   中英

可以在python中將靜態變量聲明為私有嗎?

[英]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_dictapplicant_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM