Наследование классов с параметрами - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть родительский класс и несколько подклассов. Каждый подкласс принимает разные параметры, но все подклассы имеют некоторые общие параметры. Я не хочу писать «общие параметры» для каждого подкласса. Как я могу это сделать?

class Parent:
    def __init__(self, name):
        self.name = name


class Subclass(Parent):
    def __init__(self, age):
         self.age = age

    def do_something(self):
         print(self.name)


instance = Subclass(name="Test", age=42)
instance.do_something()  # 42

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Я использую это следующим образом

Вы можете добавить столько дочерних классов, сколько хотите

class ParentClass(object):
    def __init__(self,baseArgs):
        self.var1=baseArgs['var1']
        self.var2=baseArgs['var2']
        self.var3=baseArgs['var3']


class ChildClass(ParentClass):
    def __init__(self,childArgs,baseArgs):
        super(ChildClass, self).__init__(baseArgs)
        self.cvar1=childArgs['cvar1']
        self.cvar2=childArgs['cvar2']

a=ChildClass({'cvar1':40,'cvar2':50},{'var1':10,'var2':20,'var3':30})
print(a.var1)
# 10
0 голосов
/ 29 апреля 2018

Вы можете попробовать это:

class Subclass(Parent):
    def __init__(self, **kwargs):
         super().__init__(kwargs['name'])
         self.age = kwargs['age']

    def do_something(self):
         print(self.name)

А затем используйте это так же, как в вопросе:

instance = Subclass(name="Test", age=42)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...