问题描述
我最近正在研究python中的设计模式,我在单例设计模式中看到了这一点:
# THIS WILL BE USED AS MetaCLASS FOR OTHER CLASSES
class MetaSingleton(type):
_instance = {}
def __call__(cls,*args,**kwargs):
if cls not in cls._instance:
cls._instance[cls] = super().__call__(*args,**kwargs)
return cls._instance[cls]
我也知道__call__
是类方法。
但我记得我曾将__call__
与self
一起使用,如下所示:
class myclass:
def __call__(self):
print('__call__ is called.')
x = myclass()
x()
# __call__ is called.
(这两个代码彼此无关,它们只是示例。)
还有另一个问题: 如果是类方法,在什么情况下可以将其用作类方法?
解决方法
这是一个实例方法。如果它是类方法,则将用classmethod
装饰。第一个参数的名称无关紧要。如果需要,可以为banana
这是一个实例方法,但是元类的实例是类。