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