gpt4 book ai didi

Python inst/klass 而不是 self ?

转载 作者:太空狗 更新时间:2023-10-30 00:31:54 26 4
gpt4 key购买 nike

有时 self 可以表示类的实例,有时也可以表示类本身。那么,为什么我们不用instklass 而不是self 呢?这不会让事情变得更容易吗?

现在怎么样了

class A:
@classmethod
def do(self): # self refers to class
..

class B:
def do(self): # self refers to instance of class
..

我认为他们应该如何

class A:
@classmethod
def do(klass): # no ambiguity
..

class B:
def do(inst): # no ambiguity
..

那么在 zen of Python 中我们为什么不这样编程呢?据说显式比隐式好?有什么我想念的吗?

最佳答案

类方法支持很晚才添加到 Python 中,并且已经建立了使用 self 作为实例的约定。保持该约定稳定比切换到更长的名称(如 instance)更有值(value)。

类方法的约定是使用名称cls:

class A:
@classmethod
def do(cls):

换句话说,约定已经存在以区分类对象和实例;永远不要对类方法使用 self

另见 PEP 8 - Function and method arguments :

Always use self for the first argument to instance methods.

Always use cls for the first argument to class methods.

关于Python inst/klass 而不是 self ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28626777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com