我有两个文件f1.py
& f2.py
。
f1.py
包含一个班级C1
。
f2.py
包含一个继承C2
。
C1
C1
包含构造函数
def __init__ (self, user_name, user_password, db_name):
self.user_name = user_name
self.user_password = user_password
self.db_name = db_name
&安培;方法
def m1(self):
print user_name
我在f2
中创建了一个对象。
db3 = C2(user_name, user_password, db_name)
db3.conn_establish()
其中,所有传递的参数都分配了一些值
如果C2
与C1
位于同一文件中。这将不会返回任何错误。但是,因为C2
存在于另一个文件中。我收到错误
NameError: global name 'user_name' is not defined
要克服我必须将m1
更改为:(只是我找到的解决方法)
def m1(self):
print self.user_name
为什么添加self
有效?
答案 0 :(得分:2)
您找到的解决方法是实现此目的的正确方法。
self
参数实际上是用于存储和检索信息的对象引用。如果你不使用self,那么你使用的是静态变量,因此如果你创建了多个C1实例(它是共享的),你会遇到麻烦。使用self将强制检查实例的值(在类本身或其他类和/或文件中)。
答案 1 :(得分:0)
你的功能定义不应该是:
def m1(self):
print self.user_name
否则您只是打印user_name
的全局值。我假设f1.py中存在这样的值,当两者都存在于同一文件中时不会引发错误。