Итак, просто для того, чтобы собрать мои мысли из комментариев для всех остальных: проблема заключается в том, чтобы два класса были неразрывно связаны при разделении функциональности.Вот мои решения:
1) Создайте модуль
Иметь другой файл, скажем mixin.py
, который имеет complex_operation
в качестве функции.Вместо того, чтобы принимать self
в качестве параметра, нужно принять строку:
# mixin.py
def complex_operation (foo: str) -> str: return foo.capitalize()
# main.py
from ai import complex_operation
class A:
def __init__(self): self.foo = "foo"
print (complex_operation (A().foo))
2) Сделать класс для приема другого класса в качестве параметра
In Mixin
's __init__
, добавьте параметр для принятия A
, а затем используйте его в своих методах:
# mixin.py
class Mixin:
def __init__(self, a: A): self.a = a
def complex_operation(self): return self.a.foo.capitalize()
# main.py
from mixin import Mixin
class A:
def __init__(self): self.foo = "foo"
print (Mixin (A()).complex_operation())