У меня есть вопрос о правильном способе программирования в Python ... Может быть, может быть несколько разных мнений, но здесь это идет:
Допустим, у меня есть класс с парой приватных атрибутов, и я реализовал два метода получения / установки (не перегружая __getattr__
и __setattr__
, но в более «Java-тистическом» стиле):
class MyClass:
def __init__(self):
self.__private1 = "Whatever1"
def setPrivate1(self, private1):
if isinstance(private1, str) and (private1.startswith("private")):
self.__private1 = private1
else:
raise AttributeError("Kaputt")
def getPrivate1(self):
return self.__private1
Теперь, скажем, несколькими строками ниже, в другом методе того же класса, мне нужно заново установить значение этого «_ private1». Поскольку это тот же класс, у меня все еще есть прямой доступ к закрытому атрибуту self. _private1.
Мой вопрос: стоит ли мне использовать:
self.setPrivate1("privateBlaBlaBla")
или я должен получить прямой доступ как:
self.__private1 ="privateBlaBlaBla"
так как я задаю новое значение, я знаю, что указанное значение («privateBlaBlaBla») является правильным (str (), которое начинается с «private»), поэтому оно не оставит систему несовместимой. С другой стороны, если другой программист берет мой код и ему нужно изменить функциональность для атрибута self .__ private1, ему нужно будет пройти весь код и посмотреть, было ли значение __private1 вручную установлено где-то еще.
Полагаю, что правильнее всего всегда использовать метод setPrivate1 и обращаться только к переменной __private1 в get / set, но я хотел бы узнать мнение более опытных программистов на Python.
Спасибо!