如何将班级放在自己的文件中,当它似乎是从实例继承的? background:我正在使用本指南;小马。它告诉我创建一个对象(db = database()),然后创建一个从db(类人(db.entity)....)继承的类。据我所知,人是

问题描述 投票:0回答:1
。它告诉我创建一个对象(db = database()),然后创建一个从db(类人(db.entity)....)继承的类。据我所知,人们正在继承一个实例 - 我什至不知道这是可能的。如果可能的话,我不知道如何将人类的类放在另一个文件中,因为所有实体都需要相同的db对象,但是我在运行时不实例化DB对象(但是我在设计时创建它们时间)。我觉得我在这里错过了一些基本的东西。

db = Database() class Person(db.Entity): name = Required(str) age = Required(int) cars = Set('Car') 问题:(第1)在给出的示例中,人真的是从实例(db)继承的,还是其他事情正在发生? (第二)我将如何将人(和其他类)放在自己的文件中并共享DB实例? 我正在运行python3.4.

print(type(db.Entity)) # yields: <class 'pony.orm.core.EntityMeta'>

当然,不可能从一个实例继承。

db
可能是
Database
python inheritance ponyorm
1个回答
4
投票
source代码
    ,您可以看到这是一个动态创建的类:
  1. db.Entity
    
    
    如果您在运行时不实例化self.Entity = type.__new__(EntityMeta, 'Entity', (Entity,), {})变量,这很棘手。您必须选择:在程序启动时实例化

    db

    并照常定义您的

    db
    类,或者将类定义推迟到创建

    Person
  2. 实例为止。一般而言,在运行时创建课程绝不是一个好主意,因此我建议立即实例化
  3. db

    将其分配到多个文件中很容易。在file a.py中,您实例化
    db
    db
    db = Database()

    在b.py中,您只是导入A:

    from A import db
    class Person(db.Entity):

    
        

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.