这有什么问题?
class Cat():
parent = Cat()
NameError:name' Cat'未定义
我想要做的就是创建一个可以嵌套的类来创建一个类别对象树。这样做的标准方法是什么?
我最终将把它作为模型放在Django中并与SQLite3同步。我是一个Python新手。遗憾...
答案 0 :(得分:3)
您正在尝试在完成Cat类的定义之前创建Cat
对象。
这个版本在语法上是合法的,但会创建一个无限的猫列表:
class Cat():
def __init__(self):
self.parent = Cat()
你可能想要的是这样的:
class Cat():
def __init__(self, parent=None):
self.parent = parent
答案 1 :(得分:1)
class Cat:
def __init__(self,parent):
self.parent = parent
Cat(Cat("dog"))
可能?
答案 2 :(得分:1)
除了无限递归的问题之外,将某些东西建模为普通类,然后考虑如何将其转换为Django模型是一个错误。这是因为object-relational impedence mismatch:Django模型应该存储在数据库中,而关系数据库永远不会与oop概念完美匹配。
幸运的是,存在一个非常好的弹簧分层数据算法,即MPTT,以及一个很好的Django实现,django-mptt。