Я пытаюсь предоставить подсказку типа в PyCharm динамически для определенного класса, что означает, что одному из его атрибутов присвоено значение во время __init__
, который, в свою очередь, является объектом.
I 'мы попытались определить тип уровня класса для атрибута, однако тип атрибута может быть одним из нескольких классов, поэтому я не могу указать на конкретный тип, но я бы хотел иметь возможность автозаполнения этогоатрибут.
class Dynamic:
def __init__(self):
self.field1 = "field1"
self.field2 = "field2"
class Reusable:
def __init__(self, dynamics=None):
if dynamics:
self.values = dynamics
else:
self.values = "nothing"
dynamic_test = Dynamic()
test = Reusable(dynamics=dynamic_test)
print(test.values.) # this is the place where auto-complete should take place
Очевидно, что автозаполнение не происходит. Я пробовал что-то похожее на
class Reusable:
value_type = str # type to-be-modified later
values: value_type
def __init__(self, dynamics=None):
if dynamics:
self.values = dynamics
else:
self.values = "nothing"
Reusable.value_type = type(self.values) # doesn't actually modify that so I won't have auto-complete based on type
Я знаю, что есть некоторые возможности, связанные с обработкой встроенной функции __dir__
, однако мне тоже не повезло с этим (не уверен, зависит ли от автозаполнения PyCharmалгоритм или нет), и никакие плагины не были разработаны в этом направлении.
Есть ли способ, которым я могу обойти это и иметь эту функцию автозаполнения в этом случае?