转:
有一个点卡住了。就是关于这个类的 类方法 和 静态方法。
class Demo: @classmethod def klassmeth(*args): print(args) return args @classmethod def testclsmeth(cls): print(cls) @staticmethod def statmeth(*args): print(args) return args if __name__ == '__main__': Demo.klassmeth() Demo.klassmeth('nihao') Demo.testclsmeth() Demo.statmeth() Demo.statmeth('nihao') # output """ (,) (, 'nihao') () ('nihao',) """
① 书中原话是这样:
按照约定,类方法的第一个参数名为
cls
(但是 Python 不介意具体怎么命名)。
而在 PyCharm 中,这个参数的命名只能为 cls
。
② 这里的参数使用了 *args
,即采用了包裹位置传递的方法。这样可以验证不管怎样调用类方法,它的第一个参数始终是它所属的类。我们可以通过上面的 main
方法的输出来验证。
转: