Предположим, у меня есть метод класса, который служит фабрикой:
class Foo:
def __init__(self, text):
self.text = text
@classmethod
def from_file(cls, path):
with open(path, 'rt') as f:
return cls(f.read())
class Bar(Foo):
def lines(self):
return self.text.count('\n')
print(Bar.from_file('bar.txt').lines())
Теперь я хочу добавить к нему аннотации pytype. Какие аннотации следует использовать для метода класса from_file
? Простая маркировка его как -> 'Foo'
не захватывает более конкретный тип c, известный в случае производного класса, такого как Bar
. Таким образом, выражение в вызове print
не будет знать, что это Bar
и имеет lines
. Как мне express, что результатом будет экземпляр аргумента cls
?