Как использовать объект родительского класса в нескольких дочерних классах, чтобы использовать все переменные набора в родительском объекте в дочернем классе в python - PullRequest
0 голосов
/ 11 апреля 2020
class A():
    def __init__(self, a, b):
        self.a = a
        self.b = b

class B(A):
    def __init__(self, c):
        self.c = c

class C(A):
    def __init__(self, d):
        self.d = d


temp = A("japan", "Germany")
childtemp1 = B("California")
childtemp2 = C("Delhi")

Через некоторое время я использую класс B и C для двух разных целей, но у них обоих есть некоторые общие переменные, которые присутствуют в классе A, а класс A уже создан.

Я используя этот класс B и C в некоторых других классах, где я хочу использовать переменные как класса (A и B), так и класса (A и C).

Ответы [ 2 ]

1 голос
/ 11 апреля 2020

Если вы хотите получить доступ к a, b, c, используя childtemp1, вам нужно передать a, b, c при создании объекта

class A():
    def __init__(self, a, b):
        self.a = a
        self.b = b

class B(A):
    def __init__(self, a, b, c):
        self.c = c
        A.__init__(self, a, b)

class C(A):
    def __init__(self, a, b, d):
        self.d = d
        A.__init__(self, a, b)

childtemp1 = B("Japan", "Germany", "California")
childtemp2 = C("Japan", "Germany", "Delhi")
print(childtemp1.a, childtemp1.b, childtemp1.c)
print(childtemp2.a, childtemp2.b, childtemp2.d)

Вывод:

Japan Germany California
Japan Germany Delhi

Вы можете создать дочерний класс, используя родительский объект

class A():
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def __repr__(self):
        return "a = " + str(self.a) + " b = " + str(self.b) 

class B(A):

    def __init__(self, parent, c):
        self.c = c
        A.__init__(self, parent.a, parent.b)

    def __repr__(self):
      return  super().__repr__()+ " c = " + str(self.c)

class C(A):

    def __init__(self, parent, d):
        self.d = d
        A.__init__(self, parent.a, parent.b)

    def __repr__(self):
        return  super().__repr__()+ " d = " + str(self.d)

temp = A("Japan", "Germany")
childtemp1 = B(temp, 'India')
childtemp2 = C(temp, 'USA')

print(childtemp1)
print(childtemp2)

Вывод:

a = Japan b = Germany c = India
a = Japan b = Germany d = USA
0 голосов
/ 11 апреля 2020

Этот пример может помочь вам понять

class A():
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def print_variables(self):
        print(self.a , " ", self.b, end = "  ")

class B(A):
    def __init__(self, a,b,c):
        super(B, self).__init__(a,b)
        self.c = c

    def show(self):
        super(B, self).print_variables()
        print(self.c)

childtemp1 = B("a","b","c")

childtemp1.show()

Вывод

a   b  c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...