簡體   English   中英

在 Python 3 中,我們可以在不使用下划線命名的情況下獲得 class 屬性的訪問說明符嗎?

[英]In Python 3, can we have access specifiers of class attributes without using the underscore in naming?

在 MATLAB 代碼中,我有一個用各種屬性塊定義的 class。 下面是一個例子:

properties (GetAccess = public, SetAccess = private)
    c = 0.3;
    MACHINE_PRECISION = 1e-16;
end

我想將 class 定義轉換為其 python 版本,保持與 MATLAB 中相同的屬性訪問規范,即公共、私有或受保護。 現在,一種方法是在名稱前使用下划線。 例如:

__c = 0.3
__MACHINE_PRECISION = 1e-16

不幸的是,我需要保持相同的名稱,因為這些 class 定義在其他地方使用,並且必須保持相同的名稱。 有沒有辦法繞過這個障礙,即指定 class 屬性的訪問權限而不必更改其名稱?

您可以使用屬性來繼續使用舊名稱作為吸氣劑:

class C:
    def __init__(self):
        self._c = 0.3
        self._MACHINE_PRECISION = 1e-16

    @property
    def c(self):
        return self._c

    @property
    def MACHINE_PRECISION(self):
        return self._MACHINE_PRECISION

請注意,Python 中的私有 class 成員按約定前綴是下划線(它們並沒有真正被解釋器隱藏,但它是大多數 ZA7F5F35426B927411FC9231B5638 代碼遵循的約定)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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