在Python中获得对对象的引用[关闭]

问题描述 投票:0回答:1

我正在尝试创建一个可以在构造中获得任何对象的类,然后将在交互式提示中列出该对象的所有可调用方法。我正在使用PyInquirer模块进行交互式提示,并使用inspect模块来获取给定对象的所有方法。

到目前为止,我已经成功地为任何给定对象动态构建了提示,但是当尝试从提示中调用方法之一时,我的程序给出了错误Foo() takes 0 positional arguments but 1 was given

我认为它崩溃的原因是在执行时不再有对该对象的引用,因此其引用计数为零,并且该对象已释放。

如果我可以让该类保留其对对象的引用,则可以解决问题。例如

    def __init__(self, object):

        # Create a local reference the object
        self.__object = &object

但是这是无效的python。

如何获得对对象的引用(或手动增加引用计数,然后在__del__函数中手动减少引用计数)?

ObjectMethodTerminal.py的完整源代码可以在这里https://gitlab.com/snippets/1939696中找到

python python-3.x reference cpython python-object
1个回答
2
投票

将示例类别更改为此:

class A:
    def Foo(self):
        print("Hello")

    def Bar(self):
        print("World")

    def Baz(self):
        print("!") 

注意方法参数中添加的self

如果您首先尝试过此代码:

a = A()
a.Foo()

[在检查班级的漫长旅程之前,您会发现您的错误。

© www.soinside.com 2019 - 2024. All rights reserved.