【发布时间】:2010-10-06 04:47:29
【问题描述】:
我在一个文件中有一系列 Python 类。一些类引用其他类。
我的代码是这样的:
class A():
pass
class B():
c = C()
class C():
pass
尝试运行它,我得到NameError: name 'C' is not defined。很公平,但有什么办法让它工作,还是我必须手动重新排序我的课程以适应?在 C++ 中,我可以创建一个类原型。 Python 有没有等价物?
(我实际上是在玩 Django 模型,但我尽量不让事情复杂化)。
【问题讨论】:
-
它在 Kernighan 和 Ritchie 中被称为函数原型,我记得是从那里开始的。
-
刚刚检查过,我的 K&R 副本中没有“类原型”;)
-
是的,这有点令人困惑,因为 OOP 中的原型概念和函数式编码完全不相关。 o_O
-
这个问题在类型标签中出现的比较多(方法的返回类型需要提前声明)。看起来阻力最小的路径是自下而上定义类型,即使这样的安排不是最可读布局。
标签: python class oop prototype