繁体   English   中英

从父类中的另一个子类访问子类

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM