python - 如何在内部类中调用上层类的变量?
问题描述
我必须将在上层类定义的变量调用到内部类。
代码
class outer:
def __init__(self):
self.Out = 'out'
self.In = self.inner()
class inner:
def __init__(self):
self.InOut = outer.Out
c = outer()
错误信息
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in __init__
File "<stdin>", line 7, in __init__
AttributeError: type object 'outer' has no attribute 'Out'
解决方案
- 要创建 的新实例
Inner class
,您应该在前面加上Outer
类名,即Outer.Inner()
。 - 你应该
Inner
在引用它之前定义类。 - 在 中
Outer.__init__
,您可以将容器对象传递给创建的实例Inner class
,即Outer.Inner(self)
,它将作为方法中的参数outer
传递Inner.__init__
。
class Outer:
class Inner:
def __init__(self, outer):
self.in_out = outer._out
print(self.in_out)
def __init__(self):
self._out = 'out'
self._in = Outer.Inner(self)
c = Outer()
推荐阅读
- javascript - Redux 状态条目哈希
- authorization - 身份验证和精细授权
- here-api - 我可以在 URL 中传递多少路点?我可以通过超过 100 个航点吗?
- php - 如何在 MAUTIC 电子邮件营销活动中发送 {contactfield=id} 等变量?
- java - Java 11 HttpClient 握手失败
- css - 如何使用 CSS 和 Flexbox 调整剩余项目的大小
- javascript - React Redux with Persist - 部署新的迭代没有冲突
- azure-active-directory - AADSTS50013:断言签名验证失败。[原因 - 未找到密钥。客户端使用的密钥指纹:'xxxx'
- google-chrome - 在 puppeteer 中更新 Chrome 版本
- vb.net - 为什么需要在将数据表绑定到数据视图之前为其命名?