Pit*_*kos 5 python class naming-conventions instance
有时self可以表示类的实例,有时也可以表示类本身.那么我们为什么不使用inst而klass不是self?这会不会让事情变得更容易?
现在的情况如何
class A:
@classmethod
def do(self): # self refers to class
..
class B:
def do(self): # self refers to instance of class
..
Run Code Online (Sandbox Code Playgroud)
我认为他们应该如何
class A:
@classmethod
def do(klass): # no ambiguity
..
class B:
def do(inst): # no ambiguity
..
Run Code Online (Sandbox Code Playgroud)
稍后在Python中添加了类方法支持,并且self已经建立了用于实例的约定.保持该惯例稳定比转换为更长的名称更有价值instance.
类方法的约定是使用名称cls:
class A:
@classmethod
def do(cls):
Run Code Online (Sandbox Code Playgroud)
换句话说,这些约定已经用于区分类对象和实例; 从不使用self类方法.
始终
self用于实例方法的第一个参数.始终
cls用于类方法的第一个参数.