当前位置: 首页 > 面试题库 >

python中的自引用类定义

邓正真
2023-03-14
问题内容

有什么办法可以从类声明中引用类名称?一个例子如下:

class Plan(SiloBase):
    cost = DataField(int)
    start = DataField(System.DateTime)
    name = DataField(str)
    items = DataCollection(int)
    subPlan = ReferenceField(Plan)

我有一个读取此信息并进行一些设置的元类,基类实现了一些常用的保存内容。我希望能够创建像这样的递归定义,但是到目前为止,在我的实验中,我一直无法获得想要的效果,通常会遇到“未定义计划”错误。我了解发生了什么,该类的名称不在该类的范围内。


问题答案:

我有一个元类,可以读取此信息并进行一些设置

大多数使用元类的框架都提供了一种解决此问题的方法。例如,Django:

subplan = ForeignKey('self')

Google App
Engine

subplan = SelfReferenceProperty()

诸如在以后添加其他属性或使用附加属性之类的解决方案的问题__new__是,大多数ORM元类都希望类属性在创建类时就存在。



 类似资料:
  • 问题内容: 我试图弄清楚类型的自引用如何与python3的类型注释一起使用-文档未对此进行任何指定。 举个例子: 此代码生成错误: 这是使用Python 3.5.1 问题答案: PEP 0484-类型提示-前向声明的问题解决了以下问题: 类型提示的问题在于,在定义函数时会评估注释(根据PEP 3107 ,与默认值类似),因此在定义函数时必须已经定义了注释中使用的任何名称。常见的情况是类定义,其方法

  • 有没有办法在类中定义参数的类型,以便该类型引用自身? 例如,以下内容不会运行: 错误:

  • 以下代码不能按预期工作。显然,我不能在类定义中使用类自己的类型: 运行它的结果是: 此外,使用检查代码会返回: 如何将此代码更正为对Python和mypy有效?

  • 我试图弄清楚类型的自我引用是如何与python3的类型注释一起工作的——文档没有指定任何与此相关的内容。 例如: 此代码生成错误: 这是在使用Python3.5。1.

  • 本文向大家介绍Python元类的自定义功能,包括了Python元类的自定义功能的使用技巧和注意事项,需要的朋友参考一下 示例 可以更改元类中的功能,以便每当构建一个类时,就将字符串打印到标准输出,或者引发异常。此元类将打印正在构建的类的名称。 您可以像这样使用元类: 标准输出为:            

  • 本文向大家介绍python自定义时钟类、定时任务类,包括了python自定义时钟类、定时任务类的使用技巧和注意事项,需要的朋友参考一下 这是我使用python写的第一个类(也算是学习面向对象语言以来正式写的第一个解耦的类),记录下改进的过程。 分析需求 最初,因为使用time模块显示日期时,每次都要设置时间字符串的格式,挺麻烦,但还是忍了。 后来,在处理多线程任务时需要实现定时控制的功能,更麻烦,