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

Python 如何在构造函数类内部调用内部函数?,python,class,self,Python,Class,Self,你好,我有这个密码 class Test(object): def start_conn(self): pass def __init__(self): self.conn = start_conn() 但此代码会导致以下错误: name错误:未定义全局名称“启动连接” 如果我编写self.conn=self.start\u conn()程序运行正常,我的问题是,在创建新实例时,是否必须使用self调用类的方法?还是我这边的设计错误 非常感谢简

你好,我有这个密码

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

    def __init__(self):
        self.conn = start_conn()
但此代码会导致以下错误:

name错误:未定义全局名称“启动连接”

如果我编写
self.conn=self.start\u conn()
程序运行正常,我的问题是,在创建新实例时,是否必须使用self调用类的方法?还是我这边的设计错误


非常感谢

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

其工作原理如下。定义(新样式)类时

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

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


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

是的,您需要在python中显式地指定self。你的两种方法周围有“类”吗?
class FooClass(object):
    def my_method(self, arg):
        print self.my_method, arg