Python 类 __init__ 不工作

标签 python class sqlalchemy

这是我在 sqlalchemy 中使用的一些非常简单的代码,我在这里遗漏了一些关于类如何工作的基本内容。

class Game(Base):
    __tablename__ = "games"

    id = Column(Integer, primary_key=True)
    a_name = Column(String)

    def __init__(self, **kwargs):
        for k, v in kwargs.iteritems():
             setattr(self, k, v)
        print 'hi'
        self.away_dictionary =  {'name': self.a_name}

    @hybrid_property
    def stuff(self):
        return self.away_dictionary

以下查询有效:

session.query(Game).first().a_name

但以下查询返回错误:

session.query(Game).first().stuff
'Game' object has no attribute 'away_dictionary'

我还有一个更基本的问题,当我查询 Game 类时它没有打印出“hi”。那么有人可以解释为什么每次我使用 Game 实例时都没有打印出“hi”吗?第二个问题是如何构建和访问我想要为此类的每个实例拥有的 away_dictionary?

最佳答案

您没有在上面的查询中创建 Game 实例,您只传递了 Game 类对象。因此永远不会调用 init() 构造函数。 如果你需要一个 Game 实例来查询,你需要这个:session.query(Game()).first().stuff.

关于Python 类 __init__ 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256604/

相关文章:

flask - 热衷于从 sqlalchemy mptt 树中获取所有项目

python - SQLAlchemy 多表连接

python - SqlAlchemy 中的动态表创建和 ORM 映射

python - 如何在 websetup.py 的 setup_app 中启用 i18n? (格式化重发)

python - 使用ctypes时如何替换libm?

python - 如何在 PyCharm 中使用 'see'/highlight 制表符和空格来检查缩进?

python - 一种确定两个句子相似程度的算法

java - 当有接口(interface)参数时是否可以自动选择适当的类方法?

C++ - 将类传递给其他类。我如何知道何时使用友元继承

c++ - 为什么 delete 仅在 main 中起作用,而在将要删除的一个或多个对象作为输入的函数中不起作用?