嵌套类的范围?

电脑杂谈  发布时间:2020-04-09 06:04:42  来源:网络整理

在嵌套类中调用外部类 de shuju_c:foreach 嵌套_c 嵌套类

?

qq_花花谢谢_0

外部类(对象):

outer_var = 1

内部类(对象):

@属性

def inner_var(自己):

返回Outer.outer_var

这与其他语言中的类似功能不同,并且使用全局查找而不是限制对external_var的访问. (如果更改了名称与外部绑定的对象,则该代码将在下次执行该对象时使用该对象. )

相反,如果您希望所有内部对象都具有对外部的引用,则由于external_var,外部实际上是一个实例属性:

外部类(对象):

c:foreach 嵌套_c 嵌套类_在嵌套类中调用外部类 de shuju

def __init __(自己):

self.outer_var = 1

def get_inner(自己):

返回自我. 内在(自我)

#“ self.Inner”是因为Inner是此类的类属性

#“ Outer.Inner”也可以使用,或者将Inner移到全局范围内

#,然后只使用“内部”

内部类(对象):

def __init __(自身,外部):

self.outer =外部

@属性

c:foreach 嵌套_c 嵌套类_在嵌套类中调用外部类 de shuju

def inner_var(自己):

返回self.outer.outer_var

请注意c 嵌套类,嵌套类在Python中并不常见,并且不会自动暗示类之间的任何特殊关系. 你最好不要嵌套. (如果需要,您仍然可以将“外部”的类属性设置为“内部”. )

查看完整答案

?

简单的胚胎无法勾勒出你的轮廓

我认为您可以做到:

OuterClass类:

outer_var = 1

InnerClass类:

通过

c:foreach 嵌套_c 嵌套类_在嵌套类中调用外部类 de shuju

InnerClass.inner_var = external_var

您遇到的问题是由于以下原因:

块是作为单元执行的一段Python程序文本. 以下是块: 模块,函数体和类定义.

(...)

范围定义了块中名称的可见性.

(...)

在类块中定义的名称范围仅限于该类块;它不会扩展到方法的代码块–包括表达式,因为它们是使用函数范围实现的. 这意味着以下操作将失败:

A类:

a = 42

b =列表(a + i表示范围(10)中的i)

#命名和绑定

c 嵌套类_在嵌套类中调用外部类 de shuju_c:foreach 嵌套

上面的意思是:

函数主体是代码块,方法是函数,则在类定义中存在的函数主体中定义的名称将不会扩展到函数主体.

说明您的情况:

类定义是一个代码块,因此,外部类定义中存在的内部类定义之外定义的名称将不会扩展为内部类定义.

查看完整答案

?

慕尼9325324

如果您不使用嵌套类,则可能会更好. 如果必须嵌套c 嵌套类,请尝试以下操作:

x = 1

OuterClass类:

outer_var = x

InnerClass类:

inner_var = x


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-169075-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 拾得
        拾得

        质检总局还说他们对真假不负责任

      • 王奔
        王奔

        家里利息为0

      • 别明亮
        别明亮

        别忘了苹果也是在中国生产的

      热点图片
      拼命载入中...