Python 为什么我需要限定局部变量?
在本课程中:Python 为什么我需要限定局部变量?,python,Python,在本课程中: class MyClass () : foo = 1 @staticmethod def bar () : print MyClass.foo 为什么我需要用MyClass来限定foo?(否则我会得到名称错误:未定义全局名称“foo”) foo不是类MyClass的本地对象吗?您需要这样做,因为bar函数是一个静态方法。这意味着您可以调用它,而不必考虑包含类的实例。也就是说,您不必创建类的实例来访问该函数 您可以阅读更多有关它的信息-您需
class MyClass () :
foo = 1
@staticmethod
def bar () :
print MyClass.foo
为什么我需要用MyClass
来限定foo
?(否则我会得到名称错误:未定义全局名称“foo”
)
foo
不是类MyClass
的本地对象吗?您需要这样做,因为bar函数是一个静态方法。这意味着您可以调用它,而不必考虑包含类的实例。也就是说,您不必创建类的实例来访问该函数
您可以阅读更多有关它的信息-您需要这样做,因为bar函数是一个静态方法。这意味着您可以调用它,而不必考虑包含类的实例。也就是说,您不必创建类的实例来访问该函数
您可以阅读更多有关它的信息-您需要这样做,因为bar函数是一个静态方法。这意味着您可以调用它,而不必考虑包含类的实例。也就是说,您不必创建类的实例来访问该函数
您可以阅读更多有关它的信息-您需要这样做,因为bar函数是一个静态方法。这意味着您可以调用它,而不必考虑包含类的实例。也就是说,您不必创建类的实例来访问该函数
您可以阅读更多有关它的信息-这称为类属性 可由
MyClass.foo
直接访问,并归该类所有。
它不属于类的实例
对于
self
这是实例变量,类的每个实例都有一个新的变量副本这称为类属性
可由MyClass.foo
直接访问,并归该类所有。
它不属于类的实例
对于
self
这是实例变量,类的每个实例都有一个新的变量副本这称为类属性
可由MyClass.foo
直接访问,并归该类所有。
它不属于类的实例
对于
self
这是实例变量,类的每个实例都有一个新的变量副本这称为类属性
可由MyClass.foo
直接访问,并归该类所有。
它不属于类的实例
对于
self
这是实例变量,类的每个实例都有一个新的变量副本这是因为Python的范围查找顺序是LEGB(局部变量、封闭函数、全局变量、内置变量).Python中的更多详细信息。Python有一个显式类变量,它是该方法的第一个参数,通常名为self
。通常可以使用self.foo
访问foo
,但在这种情况下,该函数是一个静态方法,因此它不接收显式类变量,因此没有替代ac的方法访问foo
。或者删除对foo
的引用,或者从bar()
中删除@staticmethod
装饰器,并添加self
作为bar()
的第一个参数,这是因为Python的范围查找顺序是LEGB(局部、封闭函数、全局、内置).Python中的更多详细信息。Python有一个显式类变量,它是该方法的第一个参数,通常名为self
。通常可以使用self.foo
访问foo
,但在这种情况下,该函数是一个静态方法,因此它不接收显式类变量,因此没有替代ac的方法访问foo
。或者删除对foo
的引用,或者从bar()
中删除@staticmethod
装饰器,并添加self
作为bar()
的第一个参数,这是因为Python的范围查找顺序是LEGB(局部、封闭函数、全局、内置).Python中的更多详细信息。Python有一个显式类变量,它是该方法的第一个参数,通常名为self
。通常可以使用self.foo
访问foo
,但在这种情况下,该函数是一个静态方法,因此它不接收显式类变量,因此没有替代ac的方法访问foo
。或者删除对foo
的引用,或者从bar()
中删除@staticmethod
装饰器,并添加self
作为bar()
的第一个参数,这是因为Python的范围查找顺序是LEGB(局部、封闭函数、全局、内置).Python中的更多详细信息。Python有一个显式类变量,它是该方法的第一个参数,通常名为self
。通常可以使用self.foo
访问foo
,但在这种情况下,该函数是一个静态方法,因此它不接收显式类变量,因此没有替代ac的方法访问foo
。要么删除对foo
的引用,要么从bar()
中删除@staticmethod
装饰器,并添加self
作为Python中bar()
的第一个参数,“局部变量”的概念实际上只存在于函数中。函数(方法)类内部没有对类(或实例)作用域的隐式访问;必须显式指定包含所需属性的对象,即类或实例(按照惯例传递给方法为self
)“显式优于隐式”,这可能与此有关。在Python中,“局部变量”的概念实际上只存在于函数中。类中的函数(方法)没有对类(或实例)的隐式访问权作用域;必须显式指定包含所需属性的对象,即类或实例(按约定)