假设我有以下课程:
class Item:
def __init__(self, string=''):
self.string = string
@classmethod
def from_string(cls, string):
return cls(string=string)
上述情况下的类方法不是必需的,因为我可以很容易地调用Item(string='asdf')
而不是Item.from_string(string='asdf')
,但我只是以它为例。
是否可以在类本身之外附加任意classmethod?例如,类似:
def from_string(cls, string):
return cls(string=string)
classmethod(from_string(Item, "asdf"))
或者,写这样的东西:
class Item:
def __init__(self, string=''):
self.string = string
from_string = classmethod(f)
def f(string):
return Item(string)
[基本上,我试图更多地了解装饰器,以及如何在其正常上下文之外使用它们(以了解它们在幕后的工作)。
@classmethod
def from_string(cls, string):
return cls(string=string)
相当于
def from_string(cls, string):
return cls(string=string)
from_string = classmethod(from_string)
class Item:
def __init__(self, string=''):
self.string = string
from_string = classmethod(f)
def f(string):
return Item(string)
应重新排列为
class Item:
def __init__(self, string=''):
self.string = string
def f(string):
return Item(string)
from_string = classmethod(f)