Python даже не имеет понятия модификаторов доступа - так что, если вы хотите иметь в виду приватную переменную, это не то, что вы можете сделать. Вы можете , однако используйте свойство только для чтения:
class Test:
def __init__(self):
self._var = 'some string'
@property
def var(self):
return self._var
Затем используйте его так:
obj = Test()
obj.var # works
obj.var = 'whatever' # raises AttributeError
obj._var = 'whatever' # still works
Примечательно, что вы может в некоторой степени эмулировать поведение закрытой переменной, добавляя к ней префикс с двойным подчеркиванием (например, в __var
), что вводит искажение имени, если оно используется в области видимости класса. Это не надежно, хотя, и вы всегда можете обойти это, если вы действительно хотите. Как правило, однако, Python разработчики знают, что не следует присваивать переменным, начинающимся с одного или двух символов подчеркивания.