Как вернуть переменную, используя другую Python - PullRequest
0 голосов
/ 18 февраля 2020

Много поработав со swift, я привык к следующему синтаксису:

private var __privateVar = 100 // Not accessible from outside the Class
public var public_var: Int = {
    return __privateVar // Returns __privateVar, and is get-only variable
}

Есть ли способ воспроизвести это в python 3? Большое спасибо

1 Ответ

1 голос
/ 18 февраля 2020

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 разработчики знают, что не следует присваивать переменным, начинающимся с одного или двух символов подчеркивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...