闭包 在函数内部定义的函数,内部函数可以使用外部函数的局部变量 def out_func(x): local_val = x def inner_func(y): return local_val + y return inner_func

result = out_func(5) print(result(10)) staticmethods and classmethods 静态方法定义在类中的方法,不需要实例化就可以使用这个方法,不会传递类中的属性,所以,与类和实例都没有关系 类方法,第一个参数是cls,和实例方法的self不同,这个cls代表类本身,可以访问类属性,不可以访问实例属性,与类有关,和实例无关 作用域 会是首先在局部作用域(比如一个函数内部)寻找,然后在嵌套作用域,然后是全局作用域,最后是内置作用域 super 用来调用在多继承中指定调用哪一个父类方法,依赖于类中的MRO,即方法解析顺序, class A: def method(self): print('A')

class B(A): def method(self): print('B') A.method(self) # 不推荐这种方式,容易引起混淆

class C(A): def method(self): print('C') super().method() # 推荐使用 super() 来调用父类方法

super().method() -->super(c,self).method()调用A中的方法,super(c,self),相当于调用c的下一个继承的父类的方法,即A ● 子类 MRO 的顺序优先于父类。 ● 如果有多个父类,它们的顺序取决于它们在类定义中的出现顺序。