То, что вы запрашиваете, работает:
class A:
def __init__(self, n):
self.n = n
def foo(self):
return A(self.n + 1)
a = A(1)
b = a.foo()
print(a.n, b.n)
Однако есть несколько проблем с вашим исходным кодом.
- Подсказка типа
-> A
не работает, потому что A
не определен в этот момент. - Вам также необходимо передать
self
методу foo
. - Если вы создаете подкласс
type
и хотите использовать его функции, я предлагаю вам также инициализировать его вызывая super().__init__()
и передавая все необходимые аргументы. Вы можете сделать это в любой момент по своему усмотрению, но обычно это делается с помощью метода __init__()
подкласса.