Python-从另一个嵌套类访问嵌套类数据

Python-从另一个嵌套类访问嵌套类数据,python,class,Python,Class,例如,我有以下代码: 课程网页: 类别属性: STYLE='attribute=“value”' 类组件: 一些标签=f'' 打印(网页、组件、一些标签) 然后我得到错误:第6行[…]name错误:未定义名称“Properties” 如果我用Webpage.Properties.STYLE更改Properties.STYLE,我会得到错误:第6行[…]NameError:name“Webpage”未定义(应为Webpage仍在定义中) 为什么会出现第一个错误属性已定义。如何获得预期的行为?

例如,我有以下代码:

课程网页:
类别属性:
STYLE='attribute=“value”'
类组件:
一些标签=f''
打印(网页、组件、一些标签)
  • 然后我得到错误:
    第6行[…]name错误:未定义名称“Properties”
  • 如果我用
    Webpage.Properties.STYLE
    更改
    Properties.STYLE
    ,我会得到错误:
    第6行[…]NameError:name“Webpage”未定义(应为
    Webpage
    仍在定义中)

为什么会出现第一个错误<代码>属性
已定义。如何获得预期的行为?我的实际代码不同,但我只想知道为什么会发生这种情况,以及如何从另一个嵌套类访问嵌套类变量(或函数)。

最简单的方法是使用对象初始值设定项或静态方法。如果您想要一个类属性,我认为您需要处理元类。下面是如何使用静态方法或对象初始值设定项

class Webpage:
  class Properties:
    STYLE = 'attribute="value"'

  class Components:
    @staticmethod
    def some_tag():
      return f'<tag {Webpage.Properties.STYLE} />'

    def __init__(self):
      self.SOME_TAG = self.some_tag()

c = Webpage.Components()
print(Webpage.Components.some_tag())
print(c.SOME_TAG)
课程网页:
类别属性:
STYLE='attribute=“value”'
类组件:
@静力学方法
def some_tag():
返回f“”
定义初始化(自):
self.SOME_TAG=self.SOME_TAG()
c=网页.组件()
打印(Webpage.Components.some_tag())
打印(c.一些标签)
印刷品:

通常在Python中没有嵌套类。出于好奇,您的用例是什么?错误消息与代码不匹配。代码显示为
组件
,错误显示为
属性
。请发布实际代码和错误消息。以下是使用嵌套类的教程:@Barmar这是实际代码,完整的错误消息是:```回溯(最近一次调用):文件“page.py”,第1行,类内网页:文件“page.py”,第5行,网页类组件:文件“page.py”,第6行,在组件中,有些\u TAG=f''NameError:name“Properties”未定义“`
NameError
位于末尾,它出现在
类组件
声明中。
class
语句创建名称空间,但不创建范围。由于
属性
未在
类组件
语句的主体中定义,因此下一步要查看的是全局范围,而不是封闭的
语句的主体。