【问题标题】:How to create an object of a class present in one file from another file?如何从另一个文件创建一个文件中存在的类的对象?
【发布时间】:2017-04-04 20:24:52
【问题描述】:

我有两个文件 f1.pyf2.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 有效?

【问题讨论】:

    标签: python class inheritance constructor


    【解决方案1】:

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

    【讨论】:

    • 当然。添加说明。
    【解决方案2】:

    你的函数定义不应该是:

     def m1(self):
        print self.user_name
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多