如何将此代码包装到python模块中?

时间:2014-02-12 00:48:20

标签: python

我正在关注this python教程。我在模块中定义了User类,这样如果我重新执行教程(在教程中似乎总是会发生),我就不必重新键入它。

这是我定义模块的user.py文件:

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)

    def __repr__(self):
        return "<User(name='%s', fullname='%s', password='%s')>" % (self.name, self.fullname, self.password)

在python解释器中,我写了以下内容:

>>> from sqlalchemy.ext.declarative import declarative_base
>>> Base = declarative_base()
>>> from user import user //NameError: name 'Base' is not defined

我应该在哪里定义Base以便用户模块看到它?一个真正的pythonista将如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

user.py需要import它所依赖的一切,或者它不会知道它(即使其他模块也这样做)。所以:

  

user.py

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    fullname = Column(String)
    password = Column(String)

    def __repr__(self):
        return "<User(name='%s', fullname='%s', password='%s')>" % (self.name, self.fullname, self.password)

您获得的NameErroruser尝试从User

声明类Base的时候