Передача класса в атрибут класса - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть класс Cash (производный от класса Instrument), который имеет атрибут класса .manager. Этот атрибут класса (экземпляр класса Manager), когда он инициализируется, должен получить класс, к которому он присоединен, как показано ниже.

class Manager: 
    def __init__(self, instrument):
        self.instrument = instrument #instrument is a class (a type)

    def get(self, *args, **kwargs):
        return self.instrument(30.99) #return an instance (e.g. ORM-like operation) 

class Instrument: 
    pass

class Cash(Instrument): 
    manager = Manager(Cash) #this fails... as Cash isn't defined yet

    def __init__(self, amount):
        self.amount = amount

Как нам этого достичь, т.е. передать свой класс одному из его собственных атрибутов класса при определении?

1 Ответ

0 голосов
/ 26 февраля 2020

Если у вас есть циклический класс / атрибуты, вы можете использовать функции, которые вы вызываете после создания экземпляра, в моем примере add_A и add_B:

class A:
    def __init__(self):
        self.foo = 1

    def add_B(self, b):
        self.b = b

class B:
    def __init__(self):
        self.bar = 2

    def add_A(self, a):
        self.a = a

a = A()
b = B()
a.add_B(b)
print(a.b.bar)
# 2

b.add_A(a)
print(b.a.foo)
# 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...