file1.py:
a = 2;
class adder():
def __init__(self):
a = a;
a = a % 5;
print a;
Run Code Online (Sandbox Code Playgroud)
adder()在" UnboundLocalError: local variable 'a' referenced before assignment,"中实例化结果,但如果我将init更改为:
def __init__(self):
print a;
Run Code Online (Sandbox Code Playgroud)
然后我没有错误.
如果a = ...(或任何其他形式的赋值for a in ...)出现在函数体中的任何位置,则a变为整个函数的局部.你不能将变量部分地全局化,部分局部化.
所以你有一个本地命名a,你正在尝试分配a = a.Python需要做的第一件事是a在右侧找出它的值......但是a还没有分配给它的本地.因此错误.
只需使用不同的变量名称.如果你真的想要改变外部a(在构造函数中有腥味!),你必须声明你的意图global a.
此外,在Python的行末尾不需要分号.如果这是Python 2,那么你的类应继承自object(如class Adder(object):),否则你会得到一个"旧式"类,它具有不同的行为,并且在以后的Python版本中不存在.
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |