Skip to main content
 首页 » 编程设计

Python 类 __init__ 确认

2025年05月04日94JeffreyZhao

我正在尝试理解 Python 类。我对定义 __init__ 有点困惑。如果我创建了 4 个函数,它们都采用各种输入变量。我是否必须为 __init__ 中的每个变量赋值?

 class Thing: 
     def __init__(self, arguments, name, address, phone_number, other): 
         self.arguments = arguments 
         self.name = name 
         self.address = address 
         self.phone_number = phone_number 
         self.other = other 
 
     def First(self, name): 
         print self.name 
 
     def Arguments(self, arguments): 
         print self.arguments 
 
     def Address(self, address, phone_number): 
         print self.address + str(self.phone_number) 
 
     def Other(self, other): 
         print self.other 

以上完全是编造的,所以请原谅它的毫无意义(可以说它的目的是为了说明我的问题,所以我猜它并非毫无意义)。

毫无疑问,出于某种原因,我会因为这个问题而得到大量的低分,但我一直在阅读各种书籍(Learning Python The Hard Way,Python For Beginners)并一直在在线阅读各种教程,但没有一个真正证实“您必须在 init 函数中添加每个变量”。因此,任何帮助更好地理解 __init__ 的人都将不胜感激。

请您参考如下方法:

首先:__init__() 函数的特殊之处在于它会在您创建类的新实例时被调用。除此之外,它是一个与任何其他函数一样的函数,您甚至可以根据需要手动调用它。

然后:您可以自由地使用传递给函数的参数做您想做的事。通常,传递给 __init__() 的参数存储在正在初始化的对象 (self) 中。有时,它们以其他方式使用,然后将结果存储在 self 中,例如传递主机名并使用它来创建套接字 - 然后您只存储套接字。不过,您不必对参数做任何事情,您可以像在 First() 函数中那样忽略它们,该函数接收一个被忽略的参数 name。注意这个参数name和类似的属性self.name是不同的东西!

注意事项:

  • 不过,忽略传递给 __init__() 的参数并不常见,就像通常忽略参数一样。在某些情况下,它们是“保留的”,因此它们可以被派生类使用,但通常它们是无意的(我猜与您的 First() 函数一样)。
  • 查看 PEP8,这是一份风格指南。遵守它会让其他人更容易阅读你的代码。例如。 First() 应该改为 first()。
  • 升级到 Python 3。我认为现在没有任何借口来学习 Python 2,除了维护以便在一般情况下使用它外,没有任何借口。