gpt4 book ai didi

python - 在 python 中初始化类时是否有使用 self 的约定?

转载 作者:行者123 更新时间:2023-12-01 07:33:14 25 4
gpt4 key购买 nike

我很好奇Python中是否存在在类的__init__方法中使用self变量的约定。

考虑简单的 Person 类。

class Person:

def __init__(self, firstname, lastname):
self.firstname = firstname
self.lastname = lastname

self.fullname = ' '.join([self.firstname, self.lastname])

__init__ 方法将两个输入 firstnamelastname 存储为实例变量,然后使用这些实例变量来定义 fullname 实例变量。

在定义self.fullname时,似乎self变量是不必要的,因此Person也可以写成:

class Person:

def __init__(self, firstname, lastname):
self.firstname = firstname
self.lastname = lastname

self.fullname = ' '.join([firstname, lastname])

这两种编写类的方式有什么有意义的区别吗?除了第二个选项需要更少的水平空间来定义 self.fullname 之外,我没有看到任何区别,这可能是可取的。

最佳答案

第二个示例是编写相同代码的一种(稍微)更有效的方法。

通常,实例的方法使用实例变量来维护实例的状态。由于每个方法都获取与 self 相同的对象,因此不同的方法可以通过它们的使用随时间进行通信。

在这两个示例中,firstnamelastname 都是所谓的“局部变量”,其生命周期仅为它们所绑定(bind)的方法的生命周期。因为它们可以更快地查找(出于我们不需要讨论的原因)并且更容易键入,所以它们通常是生命周期有限的值的首选。

关于python - 在 python 中初始化类时是否有使用 self 的约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120338/

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