如何从另一个文件创建一个文件中存在的类的对象?

时间:2017-04-04 20:24:53

标签: python class inheritance constructor

我有两个文件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()

其中,所有传递的参数都分配了一些值

如果C2C1位于同一文件中。这将不会返回任何错误。但是,因为C2存在于另一个文件中。我收到错误

NameError: global name 'user_name' is not defined

要克服我必须将m1更改为:(只是我找到的解决方法)

def m1(self):
    print self.user_name

为什么添加self有效?

2 个答案:

答案 0 :(得分:2)

您找到的解决方法是实现此目的的正确方法。 self参数实际上是用于存储和检索信息的对象引用。如果你不使用self,那么你使用的是静态变量,因此如果你创建了多个C1实例(它是共享的),你会遇到麻烦。使用self将强制检查实例的值(在类本身或其他类和/或文件中)。

答案 1 :(得分:0)

你的功能定义不应该是:

 def m1(self):
    print self.user_name

否则您只是打印user_name的全局值。我假设f1.py中存在这样的值,当两者都存在于同一文件中时不会引发错误。