[英]Accessing a child class from another child class inside parent class
我真的不知道我应该选择什么标题。 无论如何,我有这样的代码(这是固定装置 ):
from fixture import DataSet
class CategoryData(DataSet):
class cat1:
name = 'Category 1'
class cat2:
name = 'Category 2'
parent = cat1
问题是我不能像cat那样在cat2中引用cat1:
File "/home/julas/cgp/cgp/datasets/__init__.py", line 11, in cat2
parent = cat1
NameError: name 'cat1' is not defined
我该怎么做?
这里有两个问题。
首先,Python不会为您执行嵌套作用域。 要访问CategoryData.cat1
,您需要拼写出来。
其次,更大的问题是,没有办法从那里访问CategoryData
:类尚未定义,因为你正在定义它。 如果你这样做:
class Object(object):
a = 1
b = Object.a
它会失败,因为在类定义结束之前不会分配Object
的值。 你可以把它想象成这样:
class _unnamed_class(object):
a = 1
b = Object.a
Object = _unnamed_class
有没有办法引用a
从那里b
分配,因为包含类尚未分配它的名字。
为了将parent
指定为类属性,您需要在包含类实际存在之后分配它:
class CategoryData(DataSet):
class cat1:
name = 'Category 1'
class cat2:
name = 'Category 2'
CategoryData.cat2.parent = CategoryData.cat1
您要么:将其移出定义:
CategoryData.cat2.parent=CategoryData.cat1
或者,如果它是对象属性(而不是类属性):
class cat2:
name = 'Category 2'
def __init__(self):
self.parent = cat1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.