在Python中没有类的情况下声明init函数[关闭]。

问题描述 投票:-3回答:1

我对类和init函数有疑问。

我们可以不声明一个类而声明一个init函数吗?我还没有试过,只是想在这里问一下。

python python-3.x class init
1个回答
1
投票

在你的例子中,你只是创建了一些函数,而这些函数的名字恰好与类实例方法相同。但是名称本身并没有什么特别之处。Python 只是将函数对象绑定到这个名字的变量上。

>>> def __init__(self):
...     print(self)
... 

创建了一个函数对象,它打印它的第一个位置参数,并将它绑定到全局变量上 "__init__". 类似的事情在这里

>>> def method(self):
...     print(self)
... 

创建了一个名为 "方法 "的函数,其位置参数名为 "self"。但是这些名字并没有什么神奇的地方。它们不是关键字,它可以很容易地被称为

>>> def i_am_not_a_method(this_is_not_self):
...     print(this_is_not_self)
... 

这是一个相同的功能。现在,当你尝试使用它时,

>>> method()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: method() missing 1 required positional argument: 'self'

它只是一个函数,而且没有提供必要的参数。

函数成为方法,不是因为它们的名字,而是因为它们被分配给类变量。创建一个类并分配这些函数,它们就开始表现得像方法。

>>> class Foo:
...     pass
... 
>>> Foo.__init__ = __init__
>>> Foo.method = method
>>> foo = Foo().method()
<__main__.Foo object at 0x7f5197defb38>
<__main__.Foo object at 0x7f5197defb38>

这两种 __init__method 运转和印刷他们的 self 对象。

© www.soinside.com 2019 - 2024. All rights reserved.