gpt4 book ai didi

python - 在Python中,self是否需要任何相同类型的对象?

转载 作者:行者123 更新时间:2023-11-30 22:50:58 25 4
gpt4 key购买 nike

我正在阅读 9.3.2。来自 python 文档的类对象,我希望有人能够澄清以下内容:

为什么这两种情况都会返回“hello world”?第一个实例我有点理解(至少我相信我明白),因为 self 正在引用对象本身“MyClass”,我猜在第二个实例中将“m”传递给 self 会做同样的事情吗?函数“self”是否只需要对“MyClass”对象的任何引用?

>>> class MyClass:
... """A simple example class"""
... i = 12345
... def f(self):
... return 'hello world'
...
>>> MyClass.f(MyClass)
'hello world'
>>> m = MyClass()
>>> MyClass.f(m)
'hello world'

最佳答案

Python 是“鸭子类型”,这意味着 self 是什么类型并不重要,只要它提供正确的接口(interface)即可。在这里,函数体中没有使用 self ,因此您可以将任何东西传递给 MyClass.f 并且它会起作用。

>>> MyClass.f(None)
'hello world'
>>> MyClass.f(9)
'hello world'
>>> MyClass.f("foo")
'hello world'

关于python - 在Python中,self是否需要任何相同类型的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39173175/

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