[英]Overriding class function with instance function in python
考虑以下示例:
class master:
@classmethod
def foo(cls):
cls.bar()
class slaveClass( master ):
@classmethod
def bar(cls):
print("This is class method")
slaveType = slaveClass
slaveType.foo()
class slaveInstance( master ):
#def foo(self):
# self.foo()
def __init__(self,data):
self.data=data
print("Instance has been made")
def bar(self):
print("This is "+self.data+" method")
slaveType = slaveInstance("instance")
slaveType.foo()
我知道当对foo
最后一个定义取消注释时它可以工作,但是还有其他方法可以使用此foo
函数而不更改用法。 我有一个大型项目,其中类定义了工作方式,并且我能够使用slaveType
更改方式,但是碰巧有一种情况需要实例,并且有太多foo
类函数无法被实例行为覆盖。
谢谢堆高车!
仔细阅读classmethod的文档。 实例方法将实例作为第一个参数传递,而类方法将类作为第一个参数传递。 调用slaveType.foo()
会传递一个实例slaveType
作为foo()
的第一个参数。 foo()
期望将类作为第一个参数。
Okey ...我竭尽全力去看Google,想知道该问些什么,但是我失败了。 现在我知道,这就是我想要做的: 创建同时是实例和类方法的方法 。 还有我需要的解决方案。
但是它看起来仍然不是很漂亮。 也许有更干净的方法或更干净的hack。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.