Py学习  »  Python

python如何向子类添加初始化参数

Rosey • 4 年前 • 992 次点击  

我有一个子类共享它的基类的init:

class SubClass(BaseClass)
    def __init__(self, param, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.thing = param

我遇到的问题是子类init参数param被传递到 super().__init__(*args, **kwargs) 作为额外参数。这通常会给我一个错误,比如:

TypeError: __init__() takes from 1 to 2 positional arguments but 3 were given

我不想那样。我只希望“param”用于这些子类实例。如何停止向基类in it发送额外的参数,同时仍然能够在子类init中使用它?再现问题的示例代码:

from unittest import TestCase


class TestCaseSubClass(TestCase):

    def __init__(self, param, *args, **kwargs):
        super().__init__(*args, **kwargs)  # Just use whatever is in TestCase's init + our stuff
        self.thing = param
        print(self.thing)


class TestClass(TestCaseSubClass(param='bdfbdfb')):

        def test_stuff(self):
            print('test stuff here')

或者只使用原始的python,没有导入,为什么我不能这样做?(相同的错误)

class A(object):
    def __init__(self, athing='thing'):
        self.thing = athing
        print(self.thing)

class AB(A):
    def __init__(self, param, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.param= param
        print(self.param)


class ABC(AB(param='thh')):
    pass

ABCinstance = ABC()
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43900
 
992 次点击  
文章 [ 1 ]  |  最新文章 4 年前