python - 如何在构造函数类内部调用内部函数?

标签 python class self

你好,我有这个代码

class Test(object):
    def start_conn(self):
        pass

    def __init__(self):
        self.conn = start_conn()

但是这段代码会出错:

NameError: 全局名称“start_conn”未定义

如果我写 self.conn = self.start_conn() 程序运行没有错误,我的问题是,当我创建一个新实例?还是我这边的设计错误?

非常感谢

最佳答案

总之,这是必须的。您必须引用存储方法的容器。大多数情况下,这意味着引用 self

其工作方式如下。当你定义一个(新式)类时

class FooClass(object):
    def my_method(self, arg):
        print self.my_method, arg

您创建一个type 对象,其中包含处于未绑定(bind) 状态的方法。然后,您可以通过类名引用该未绑定(bind)方法(即通过 FooClass.my_method);但是要使用该方法,您必须通过 self 参数显式传递一个 FooClass 对象(如 FooClass.my_method(fooclass_instance, arg) ).

然后,当您实例化您的类 (f = FooClass()) 时,FooClass 的方法将绑定(bind)到特定实例 f .然后,每个方法中的 self 都引用该实例 (f);这是自动的,因此您不再需要显式地将 f 传递到方法中。但是你仍然可以做 FooClass.my_method(f, arg);这相当于 f.my_method(arg)

但是请注意,在两种情况下,self 是类的其他方法传递给my_method 的容器,它无法通过任何其他途径访问它们。

关于python - 如何在构造函数类内部调用内部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249609/

相关文章:

python - 如何使用openCV和其他库在python中找到两个视频文件的PSNR和SSIM?

python - 将 python 字典转换为变量的最佳方法是什么?

java - 在Java中,在一个静态方法内部,如何判断调用了哪个类的静态方法?

Python 属性错误 : object has no attribute 'self'

python - 将类实例引用传递给 Python 中类定义中调用的函数

python - 如何使用 SQLAlchemy contextmanager 并仍然获得行 ID?

python - JSON 网站响应到 Python 字典

python - 如何在 Python 的同一类中将实例变量指定为关键字参数的默认值

java - 编译时 VS 运行时

vba - 从集合和数组中删除的类会发生什么