python - python中不允许嵌套类中的类变量是什么原因?
问题描述
似乎无法在嵌套子类中定义类级别变量,例如:
class Outer:
def __init__(self):
self.inner_object=self.Inner()
class Inner:
static_variable = 0
def __init__(self):
Inner.static_variable = 1
我在最后一行代码中收到一条错误消息,指出“未定义内部”。
解决方案
class
陈述很棘手。他们创建了一个新的临时命名空间,但没有定义一个新的范围。由于Inner
未在内部定义__init__
,因此在调用时必须在封闭范围内查找名称__init__
并且需要值 for Inner
。但是下一个封闭范围不是class
语句的主体,因此没有Inner
找到 of 的定义。
引用Inner
类的正确方法是将其正确地视为Outer
类的属性。
class Outer:
def __init__(self):
self.inner_object = Outer.Inner()
class Inner:
static_variable = 0
def __init__(self):
Outer.Inner.static_variable = 1
也就是说,内部类在 Python 中很少定义,因为与 Java 不同,没有禁止在模块的顶层定义多个类。
推荐阅读
- android - 我可以在 Flutter 中为 Android 应用程序安装应用程序后更改应用程序图标和名称吗?
- sql - 使用另一个表中的值更新表,否则为 NULL
- python - 部署为 Web 服务 (Python) 的 Azure ML 时间序列预测模型的数据输入格式(调用服务)
- arrays - 编译器如何在恒定时间内从对象数组中获取元素?
- python - 如何在 Python 中对列表的列表进行主要和次要排序规定
- asp.net-core - 调用操作时,会话被清除.Net Core
- python - 为什么这段代码会无限循环?
- python-3.x - 有什么办法可以让公会对象一个命令运行呢?
- javascript - axios post请求提交后抛出431错误
- mysql - Mysql 错误代码:1329。无数据 - 提取、选择或处理零行