python:sth like parametrized inheritance

net*_*men 1 python inheritance

我想要我的类,XY有一个f(x)调用函数的方法,func(x, y)以便X.f(x)始终调用func(x, 1)Y.f(x)始终调用func(x, 2)

class X(object):
    def f(self, x):
        func(x, 1)

class Y(object):
    def f(self, x):
        func(x, 2)
Run Code Online (Sandbox Code Playgroud)

但是,我想将f在一个公共基类BXY.我如何可以传递值(1或2)当我继承XYB?我可以像这样(C++像伪代码):

class B(object)<y>:  # y is sth like inheritance parameter
    def f(self, x):
        func(x, y)

class X(B<1>):
    pass

class Y(B<2>):
    pass
Run Code Online (Sandbox Code Playgroud)

Python中使用了哪些技术来完成这些任务?

qua*_*ana 6

Python比你给予信任更灵活.

我想你想要这样的东西:

class B(object):
    def f(self,x):
        func(x, self.param)

class X(B):
    param=1

class Y(B):
    param=2
Run Code Online (Sandbox Code Playgroud)

NB

  • 注意方法f将self作为第一个参数.
  • param =行是类变量.