我很好奇python中是否有在类的__init__
方法中使用自变量的约定。
考虑简单的Person
类。
class Person:
def __init__(self, firstname, lastname):
self.firstname = firstname
self.lastname = lastname
self.fullname = ' '.join([self.firstname, self.lastname])
__init__
方法将两个输入firstname
和lastname
存储为实例变量,然后使用这些实例变量来定义fullname
实例变量。
在定义self
时似乎不需要self.fullname
变量,因此Person
可以写成:
class Person:
def __init__(self, firstname, lastname):
self.firstname = firstname
self.lastname = lastname
self.fullname = ' '.join([firstname, lastname])
这两种编写类的方式之间是否存在有意义的区别?除了第二个选项需要较少的水平空间来定义self.fullname
以外,我没有看到其他区别。
答案 0 :(得分:1)
第二个示例是一种写相同代码的(非常稍微)有效的方法。
通常,实例的方法使用实例变量来维护实例的状态。由于每种方法与self
都具有相同的对象,因此不同的方法可以随着时间的推移通过使用进行通信。
在两个示例中,firstname
和lastname
都是所谓的“局部变量”,其生存期仅是绑定它们的方法的生存期。因为可以更快地查找它们(由于我们不需要介绍的原因)并且更容易键入它们,所以它们通常是生命周期有限的值的首选。