在python中用实例函数重写类函数

2024-10-02 04:35:28 发布

您现在位置: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的函数被重写来作为实例行为。在

谢谢你们!在


Tags: selfmasterdatafooisdefbarthis
2条回答

请仔细查看classmethod的文档。实例方法将实例作为第一个参数传递,类方法将类作为第一个参数传递。调用slaveType.foo()传递一个实例slaveType,作为foo()的第一个参数。foo()需要一个类作为第一个参数。在

好吧。。。我尽了最大的努力,想办法问什么,但我失败了。现在我知道,这就是我想做的:Creating a method that is simultaneously an instance and class method。还有我需要的解决方案。在

但它看起来还是不太美。也许有更干净的方法或者更干净的黑客。在

相关问题 更多 >

    热门问题