gpt4 book ai didi

python - 有人怎么知道何时将对象作为参数传递给函数

转载 作者:行者123 更新时间:2023-12-01 03:55:21 24 4
gpt4 key购买 nike

假设我有一个字符串

my_str = "Hello World"
func1 = getattr(__builtins__, 'len')
func1
<built-in function len>
func1()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: len() takes exactly one argument (0 given)

func1(my_str)
11

在 func1 中,我必须传递 func1 中的 my_str 对象才能获得结果,但是如果我做这样的事情

func2 = getattr(my_str, 'replace')
func2
<built-in method replace of str object at 0x102d83cc0>

func2()
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: replace() takes at least 2 arguments (0 given)

func2("Hello", "Yello")
'Yello World'

这里的func2是my_str对象的内置方法,我不必传递my_str对象。

给定 2 个对象 func1func2 我想知道它们是区分这些对象的方法运行时的 2 个函数

最佳答案

如果能回答以下问题即可解决问题。

函数/方法是否是对象的一部分?在给定的示例中,func1 是一个独立函数,func2 是“str”对象的方法。

__self__”属性可以用来回答这个问题。

my_str = "Hello World"
func1 = getattr(__builtins__, 'len')
func1
func1.__self__ # is empty

func2 = getattr(my_str, 'replace')
func2
func2.__self__ # it is non-empty

关于python - 有人怎么知道何时将对象作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37562055/

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