[英]Scope of classes inside of functions and classes inside of a class in python
我正在编写一些代码,并对python有一个一般性问题
如果我有这样的事情:
class A():
def __init__(self):
self.name
...
def doSomething(self):
class B():
def __init__(self):
self.name
...
c = B()
c.whatever()
这是否意味着类B仅对该函数专有?或者可以从类A的实例调用它? 关于这一点,如果我有这样的代码:
class A():
class B():
def __init__(self):
self.name
def __init__(self):
self.name
...
def doSomething(self):
...
我可以这样称呼它d = AB()
对吗?
要实现的是, class
语句仅创建一个值为类的变量。 如果只进行了x = 2
类的常规变量赋值,则结果类的作用域的工作方式与变量的作用域的工作方式相同。
除非另有说明,否则在函数内部创建的任何变量都是该函数的局部变量。 因此,在函数内部使用class
语句仅会创建一个值为类的局部变量。 不能从函数外部访问它。
换句话说,这是:
def foo():
class A(object):
pass
并没有什么不同:
def foo():
A = 2
在这两种情况下,您都需要在函数内部创建局部变量A。 在一种情况下,它的值是一个类,在另一种情况下,它的值是一个整数,但在两种情况下,它都是局部变量,并且在函数外部不存在。
在第二个示例中,该类在封闭的类内部创建。 在类名称空间内创建的变量是类属性,因此是的,您可以按照描述进行访问。 (为什么要这样做是另一个问题。)换句话说,如上所述:
class A(object):
class B(object):
pass
与此没有什么不同:
class A(object):
B = 2
在这两种情况下,您都将创建一个具有类属性B的类A。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.