Узнать значение переменной другого класса

Подскажите, как в классе A получить доступ к переменной self.d в классе B?
Как переменной self.f класса A присвоить значение переменной self.d класса B?

class A:
    def __init__(self):
        self.f = 'a'

    def __str__(self):
        self.f = B.d #ошибка
        return self.f

class B:
    def __init__(self):
        self.d = 'b'

    def __str__(self):
        return self.d

a = A()
print(a)

Ответы (1 шт):

Автор решения: AvidCoder

Для того чтобы класс A получил доступ к полю self.d класса B и присвоил значение полю self.f, можно изменить ваш код, сделав экземпляр класса B членом класса A.

Вот исправленный пример:

class A:
    def __init__(self):
        self.f = 'a'
        self.b_instance = B() # Создаем экземпляр класса B внутри класса A

    def __str__(self):
        self.f = self.b_instance.d # Получаем доступ к переменной self.d из экземпляра класса B
        return self.f

class B:
    def __init__(self):
        self.d = 'b'

    def __str__(self):
        return self.d

a = A()
print(a)

Также можно прибегнуть к другому решению: сделать поле self.d класса B статическим:

class A:
    def __init__(self):
        self.f = 'a'

    def __str__(self):
        self.f = B.d # Обращаемся к статической переменной d класса B напрямую
        return self.f

class B:
    d = 'b' # Сделаем переменную d статической

    def __str__(self):
        return self.d

a = A()
print(a)
→ Ссылка