【问题标题】:Why should I use a method instead of using __init__()?为什么我应该使用方法而不是使用 __init__()?
【发布时间】:2021-01-03 06:11:44
【问题描述】:

在我正在观看的 Python OOP 教程中,他们使用了一种方法而不是将其放在 __init__ 下,我想知道创建方法有什么区别,我可以将它放在 __init__ 下。

class Employee:
    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname
        
    def fullname(self):
        return f'{self.firstname} {self.lastname}'

这是他们使用的代码,我使用下面的代码完全可以正常工作。

class Employee:
    def __init__(self, firstname, lastname):
        self.firstname = firstname
        self.lastname = lastname
        self.fullname = f'{firstname} {lastname}'

【问题讨论】:

  • 第一个示例中的全名方法将无法正常工作。在第二个示例中,您无缘无故地将全名作为参数传递。
  • 您可以将fullname 设为属性。请学习python。周围有很多好书

标签: python python-3.x class oop


【解决方案1】:

这是一个设计决定。将某些东西保留为变量意味着只要对象存在就保留它。将其定义为函数将在运行时计算其值。

由于fullname 是可以在运行时轻松计算的东西,并且是从已经存在的变量firstnamelastname 派生的,因此它有些多余,这就是为什么他们建议将其设计为函数而不是变量的原因.

您可能希望将其存储为变量的情况是,如果该值被非常频繁地使用或在运行时计算的计算量很大,那么您将存储它一次并重新使用它。

但由于这是一个设计决定,因此会因情况而异。

【讨论】:

  • It's a design decision 喜欢它!
猜你喜欢
  • 2016-05-23
  • 2012-09-18
  • 2019-08-22
  • 1970-01-01
  • 2018-05-10
  • 2014-03-12
  • 2012-12-13
  • 2013-11-07
  • 1970-01-01
相关资源
最近更新 更多