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