Skip to main content
 首页 » 编程设计

python之在 python 中,如果我编辑此 : type ("myclass", (foo,), {"bar()", barbar},我如何访问属性 "bar()"

2025年05月04日16lonelyxmas

>>> FooChild = type("FooChild", (Foo,), {"echobar()":echo_bar}) 
>>> FooChild().echobar() 
 
Traceback (most recent call last): 
  File "<pyshell#214>", line 1, in <module> 
    FooChild().echobar() 
AttributeError: 'FooChild' object has no attribute 'echobar' 
>>> FooChild().echobar 
 
Traceback (most recent call last): 
  File "<pyshell#215>", line 1, in <module> 
    FooChild().echobar 
AttributeError: 'FooChild' object has no attribute 'echobar' 
>>> hasattr(FooChild, "echobar()") 
True 
>>> FooChild().echobar()() 
 
Traceback (most recent call last): 
  File "<pyshell#217>", line 1, in <module> 
    FooChild().echobar()() 
AttributeError: 'FooChild' object has no attribute 'echobar' 

请您参考如下方法:

删除那些括号:

FooChild = type("FooChild", (Foo,), {"echobar":echo_bar}) 

函数名不带括号。添加它们意味着调用函数。如果没有括号,您将获得对函数本身的引用(例如,将函数传递给 sort 或 map)。