Нет. annotations
применяется только к аннотациям переменных и функций. Пока оператор class
не будет полностью выполнен, не существует класса Foo
для создания экземпляра. Вы должны дождаться, пока определится Foo
, чтобы создать его экземпляр.
class Foo:
def __init__(self, name):
self.name = name
Foo.BAR = Foo("bar")
Вы всегда можете инициализировать BAR = None
, а затем изменить значение атрибута. после того, как класс определен.
class Foo:
BAR = None # To be a Foo instance once Foo is defined
...
Foo.BAR = Foo("bar") # Fulfilling our earlier promise
Это может быть желательно для целей документирования, чтобы прояснить определение, что Foo.BAR
будет , хотя и с другим значением. Я не могу вспомнить ситуацию, когда это было бы необходимо , однако.