如何解决为什么 python 闭包在这种情况下不起作用?
class Example:
text = "Hello World"
def function():
print(text)
Example.function()
Example.printText()
抛出此错误 NameError: name 'text' is not defined
为什么 printText()
不记得类属性 text
?
和python解释代码的顺序有关系吗?
解决方法
函数是静态的 您需要使用 self 来访问对象属性 像这样:
class Example:
text = "Hello World"
def function(self):
print(self.text)
如果你想保持静态使用:
def function():
print(Example.text)
class Example:
text = "Hello World"
,
使用 @staticmethod
装饰器使函数静态化。
class Example:
text = "Hello World"
@staticmethod
def function():
# print(self.text) # raises error
# because self is not defined
# when using staticmethod
# so you need to specify
# the class name
print(Example.text)
# now its working
>>> Example.function()
出
Hello World
额外信息:
- 变量
text
将可用于使用此类创建的every object
,如果您更改text
,将在该类的每个对象中更改。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。