如何为每个新的父对象实例化一个新的属性对象?

2024-09-29 05:23:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个特殊的情况,我试图模仿模型类的django感觉,比如:

class packet(models.packet):
    field1 = models.IntField()
    field2 = models.IntField()

有很多使用元分类的后台接口,但最重要的是允许用户与如下字段交互:

p = packet()
p.field1 = 12
p.field1 == 12 # true

但仍不影响字段类型:

isinstance(p.field1, models.IntField) # true

我面临的问题是两个packet对象共享相同的Fields,因为它们是类属性:

p1 = packet()
p2 = packet()

p1.field1 = 12
p2.field2 = 14

p1 is p2 # false
p1.field1 is p2.field1 # true

如何为每个新的父对象实例化一个新的属性对象?你知道吗

要提供更好的上下文,请随意浏览source here


Tags: 对象django模型true属性packetismodels