William M.
William M.

Reputation: 379

Class Inheritance with parameters

I have a parent class and several subclasses. Every subclass accepts different parameters, but all subclasses have some common parameters. I don't want to write the "common parameters" for every subclass. How can I do this?

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

Upvotes: 1

Views: 76

Answers (2)

Anant Gupta
Anant Gupta

Reputation: 1159

I use it in the following manner

You can add as many child classes as you want

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

Upvotes: 0

ForceBru
ForceBru

Reputation: 44906

You can try this:

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

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

And then use this just like you did in the question:

instance = Subclass(name="Test", age=42)

Upvotes: 2

Related Questions