Представьте меня инициализатор с дополнительным параметромкласса доступа в инициализации необязательного параметра
def __init__(self, seed = ...):
Теперь, если параметр не задан, я хочу, чтобы обеспечить значение по умолчанию. Но семя трудно вычислить, поэтому у меня есть метод класса, который предполагает семя, основанное на некотором переменном классе
MyClass.seedFrom(...)
Теперь, как я могу назвать это от этого места? Если я использую self
:
def __init__(self, seed = self.__class__.seedFrom(255)):
Я определенно не знаю, что само в этой точке. Если я использую имя класса непосредственно (который я ненавижу делать):
def __init__(self, seed = MyClass.seedFrom(255)):
он жалуется, что
имени «MyClass» не определен
Я также заинтересован в изучите питонический способ сделать это. И я надеюсь, что вещий способ не жестко прописывать материал и делает его ноль по умолчанию и проверить его позже ...
Yup, это делает его ноль по умолчанию и проверяет его позже. –
Это абсолютно путинский путь. Значения параметров по умолчанию оцениваются только один раз, а во время определения метода имя класса не существует. Вы также можете рассмотреть возможность создания classmethod альтернативного конструктора. – jonrsharpe
«Надеюсь, что питонический путь не ... делает его по умолчанию и проверяет его позже» - вы хотите, чтобы по умолчанию «семя» было исправлено или вы хотите выбрать новый каждый раз? Если вы хотите новый каждый раз, вы застряли с этим вариантом. – user2357112