理解Python中的空间

Fri*_*Joe 1 python

我是Python的初学者.我知道空间在编译中起着重要作用.所以我在同一个python脚本文件中有以下两个类:

class ClassA:
  def __init__(self):
     self.x = {}
  def _methodA1():
    # Something
  def _methodA2():
    # Something

class ClassB:
  def _methodB1():
    # Something
  def _methodB2():
    # Something

def MethodX():
  print "Hello World"
Run Code Online (Sandbox Code Playgroud)

(1)MethodX属于哪一类?

(2)我们可以说ClassB是内在的一类ClassA吗?

(3)如果MethodX属于ClassA,self.x是否可以通过MethodX

Sha*_*ger 8

  1. MethodX 属于没有类,它是一个全局函数,而不是其中一个类的方法
  2. 不,因为ClassA并且ClassB是相同的缩进; 内部类ClassA将匹配方法定义的缩进ClassA
  3. 由于它不属于任何类,MethodX因此无法直接访问任何实例的属性.除此之外,self必须通过方法明确接受为第一个位置论证; 既然MethodX不接受self,就无法访​​问它.因此,你所有的方法都被打破了; 除非装饰@staticmethod,否则他们需要接受至少一个位置参数(self在常规方法上按惯例调用,并cls按惯例在@classmethods 上调用).