为什么即使没有用@classmethod或@staticmethod标记,类中的方法也能工作?

时间:2017-08-28 00:28:56

标签: python class methods

我是Python的新手,只是了解它的对象/类的实现。我理解实例方法,类方法和静态方法之间的区别,但我不明白为什么可以从类本身调用未被装饰为@classmethod或@staticmethod的方法。

我非常(非常)基本的例子:

DIAPI <- 
fromJSON("https://rxnav.nlm.nih.gov/REST/interaction/interaction.json?
rxcui=&sources=ONCHigh")

方法print_stuff()在类上调用时似乎充当静态方法,将参数作为单个参数而不是类(cls)。为什么在类上调用未使用@staticclass修饰的方法?这是设计还是只是一种奇怪的副作用,为什么?从我到目前为止所学到的,Python在设计上几乎没有“奇怪的副作用”。

1 个答案:

答案 0 :(得分:1)

名为self的第一个参数仅仅是一个约定。该实例将作为第一个位置参数传递,与您命名的实例无关(在本例中,您将其称为stuff)。