使用@staticmethod
时是否可以调用@classmethod
@dataclass
class Piza:
ingridients: List
@classmethod
def make_Pizza(cls, ingrid, allerg=False):
ingridients = ingrid
if allerg:
return cls(make_for_allerg(ingrid, allerg))
return cls(ingrid)
@staticmethod
def make_for_allerg(ingrid, allerg):
return ingrid.append(allerg)
测试没有过敏:
Piza.make_Pizza(['tomato', 'cheese'])
比萨(ingridients = ['tomato','cheese'])
测试过敏假:
Piza.make_Pizza(['tomato', 'cheese'], allerg='pickle')
-------------------------------------------------- ------------------------- NameError追溯(最近的呼叫
最后)在()
1个
----> 2 Piiza.make_Piza(['tomato','cheese'],allerg ='pickle')
在make_Pizza中(cls,ingrid,allerg)
7成分=成分
8如果过敏:
----> 9 return cls(make_for_allerg(ingrid,allerg))
10返回cls(ingrid)
11
NameError:名称'make_for_allerg'未定义
最佳答案
静态方法是类对象的属性,因此它仍由类名称命名。您可以在类对象上调用它:
Piza.make_for_allerg(...)
注意:您的实现不是静态方法的令人信服的用例。
list.append
的返回值始终为None
。关于python - 在@classmethod期间调用@staticmethods,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52188574/