获取对象的引用
Get a reference to an object
我正在尝试创建一个 class,它可以在构建时被赋予任何对象,然后将在交互式提示中列出该对象的所有可调用方法。我正在使用 PyInquirer
模块进行交互式提示,并使用 inspect
模块来获取给定对象的所有方法。
到目前为止,我已经成功地为任何给定对象动态构建提示,但是当我试图从提示中调用其中一种方法时,我的程序给出了错误 Foo() takes 0 positional arguments but 1 was given
。
我认为它崩溃的原因是在执行时没有更多对该对象的引用,因此它的引用计数为零并且对象被释放。
如果我能让 class 保留它自己对该对象的引用,那么这将解决问题。例如
def __init__(self, object):
# Create a local reference the object
self.__object = &object
但这是无效的python。
如何获取对象的引用(或手动增加引用计数,并在 __del__
函数中手动减少它)?
可在此处找到 ObjectMethodTerminal.py 的完整源代码 https://gitlab.com/snippets/1939696
将您的示例 class 更改为:
class A:
def Foo(self):
print("Hello")
def Bar(self):
print("World")
def Baz(self):
print("!")
注意方法参数中添加的 self
。
如果您先尝试过此代码:
a = A()
a.Foo()
在检查 class.
之前,你会发现你的错误
我正在尝试创建一个 class,它可以在构建时被赋予任何对象,然后将在交互式提示中列出该对象的所有可调用方法。我正在使用 PyInquirer
模块进行交互式提示,并使用 inspect
模块来获取给定对象的所有方法。
到目前为止,我已经成功地为任何给定对象动态构建提示,但是当我试图从提示中调用其中一种方法时,我的程序给出了错误 Foo() takes 0 positional arguments but 1 was given
。
我认为它崩溃的原因是在执行时没有更多对该对象的引用,因此它的引用计数为零并且对象被释放。
如果我能让 class 保留它自己对该对象的引用,那么这将解决问题。例如
def __init__(self, object):
# Create a local reference the object
self.__object = &object
但这是无效的python。
如何获取对象的引用(或手动增加引用计数,并在 __del__
函数中手动减少它)?
可在此处找到 ObjectMethodTerminal.py 的完整源代码 https://gitlab.com/snippets/1939696
将您的示例 class 更改为:
class A:
def Foo(self):
print("Hello")
def Bar(self):
print("World")
def Baz(self):
print("!")
注意方法参数中添加的 self
。
如果您先尝试过此代码:
a = A()
a.Foo()
在检查 class.
之前,你会发现你的错误