Function Can';t访问Python函数作为属性
假设我有以下test.py文件Function Can';t访问Python函数作为属性,function,class,attributes,python-2.x,Function,Class,Attributes,Python 2.x,假设我有以下test.py文件 import foo class example1(object): MyFunc = foo.func foo.py在哪里 def func(): return 'Hi' 然后我写另一个文件 import test test.example1.MyFunc() 并获取错误“必须使用example1实例作为第一个参数调用unbound method func()(而不是获取任何内容)” 如何将函数func用作类example1的属
import foo
class example1(object):
MyFunc = foo.func
foo.py在哪里
def func():
return 'Hi'
然后我写另一个文件
import test
test.example1.MyFunc()
并获取错误“必须使用example1实例作为第一个参数调用unbound method func()(而不是获取任何内容)”
如何将函数func用作类example1的属性?以下内容在Python 2.7中适用: 类定义中缺少
\uuuu init\uuuu()
方法
foo.py的定义如下:
def func():
return 'Hi'
import foo
class example1():
def __init__(self):
self.MyFunc = foo.func
该类应定义如下:
def func():
return 'Hi'
import foo
class example1():
def __init__(self):
self.MyFunc = foo.func
然后,当您想要从类中调用属性时,您应该首先实例化它。tester.py脚本应如下所示,例如:
import tester
testerInstance = tester.example1()
testerAttribute = testerInstance.MyFunc()
print testerAttribute
这是一个Python2问题。将
test.py
更改为以下内容,它就会工作
import foo
class example1(object):
MyFunc = staticmethod(foo.func)
请注意,如果在显示时保持test.py
,则以下操作有效:
test.example1.__dict__['MyFunc']()
这与Python中访问函数属性的方式有关。如果你感到好奇,就看一看
这是一本书。及
这个问题的技术性正在发展您的问题是一个特定于python 2的问题。Python3中不推荐使用类型
unbound方法
。因此,您的代码适用于python 3。以下是一个关于以下内容的被广泛接受的答案:。在Python2中调用未绑定方法需要相应类类型的实例
这里有一些解决方案。另一个是,您可以这样定义您的函数:
def func(object):
return "Hi"
因为这是把object作为它的第一个参数。现在您可以编写以下代码:
test.example1().MyFunc()
上述错误是Python2特有的。