我正在阅读这篇Python教程 -
class Pizza(object):
@staticmethod
def mix_ingredients(x, y):
return x + y
def cook(self):
return self.mix_ingredients(self.cheese, self.vegetables)
>>> Pizza().cook is Pizza().cook
False
>>> Pizza().mix_ingredients is Pizza.mix_ingredients
True
>>> Pizza().mix_ingredients is Pizza().mix_ingredients
True
我不太明白--->的结果Pizza()。cook是Pizza()。cook - >他们为什么不同?
和Pizza()。mix_ingredients是Pizza.mix_ingredients - >有支架和没有支架有什么区别?
最后,对于静态方法,为什么最终结果为True?
非常感谢!
答案 0 :(得分:2)
考虑这一点的方法是将cook
方法视为每Pizza
个方法,而所有Pizza
共享相同 {{1 }} @staticmethod
。
因此mix_ingrecdients
会为您提供一个新披萨,因此Pizza()
是特定披萨的烹饪方法(由Pizza().cook
表示),所以,
self
因此将是Pizza().cook is Pizza().cook
。
这部分回答了问题的下一部分。 Pizza是类型,Pizza()是该类型的实例。当您引用静态方法时,它提供相同的功能:
False
如果您尝试使用实例方法,您将获得“绑定”和“未绑定”功能。