python 从静态方法调用静态方法时的多态性
Polymorphism when calling a static method from a static method in python
我目前正在解决一个问题,其中许多 classes 将基于一个基础 class。我希望这些 classes 从基础 class 继承一个静态函数,后者又调用一个静态函数。但是,将为每个 class.
定义第二个静态函数
一个简单的例子是:
class foo():
@staticmethod
def fn1(x):
return x
@staticmethod
def fn2(x, y):
return foo.fn1(x + y)
class bar(foo):
@staticmethod
def fn1(x):
return 2*x
使用上面的代码 bar.fn2(1, 2)
returns foo.fn1(1 + 2)
而我希望它变成 return bar.fn1(1 + 2)
。
是否可以在 python 中使用静态方法而不为每个 class 定义 fn2?
感谢任何帮助!
将 fn2
改为 class 方法,以便它可以访问用于调用该方法的 class:
@classmethod
def fn2(cls, x, y):
return cls.fn1(x + y)
我目前正在解决一个问题,其中许多 classes 将基于一个基础 class。我希望这些 classes 从基础 class 继承一个静态函数,后者又调用一个静态函数。但是,将为每个 class.
定义第二个静态函数一个简单的例子是:
class foo():
@staticmethod
def fn1(x):
return x
@staticmethod
def fn2(x, y):
return foo.fn1(x + y)
class bar(foo):
@staticmethod
def fn1(x):
return 2*x
使用上面的代码 bar.fn2(1, 2)
returns foo.fn1(1 + 2)
而我希望它变成 return bar.fn1(1 + 2)
。
是否可以在 python 中使用静态方法而不为每个 class 定义 fn2?
感谢任何帮助!
将 fn2
改为 class 方法,以便它可以访问用于调用该方法的 class:
@classmethod
def fn2(cls, x, y):
return cls.fn1(x + y)