我不小心为一个pyplot函数(即xticks)分配了一个元组,并且该函数变成了一个元组。无法将其先前类型恢复为功能。这是正常的还是被认为是一个问题?
<p> q </p> <!-- q = 'worked' -->
答案 0 :(得分:2)
在Python中,没有受保护变量这样的东西。您可以在当前命名空间中将变量写入模块,只有少数例外(未编译子类的内置类型,以及定义__slots__
的任何类(感谢Alex Hall)是主要的例外情况)。
例如:
>>> from collections import namedtuple
>>> x = namedtuple('x', 'a b')
>>> y = x(1, 3)
>>> y.a = 3
AttributeError: 'X' object attribute 'a' is read-only
>>> a.t = 3
AttributeError: 'X' object has no attribute 't'
仅适用于少数内置类型,以及以特定方式覆盖__setattr__
或使用不带属性设置器的属性的类。一般规则是,任何东西都可以写入,无论是类,模块,函数等。是的,函数。
>>> def a(x):
... pass
>>> a.b = 1
>>> a.b
1
那么,如果意外覆盖您导入的模块中的变量,如何修复错误?或者,重新启动Python解释器或重新加载模块。
Python2重新加载
>>> import matplotlib.pyplot as plt
>>> plt.xticks = 5
>>> plt = reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>
Python3重新加载
>>> import matplotlib.pyplot as plt
>>> import importlib
>>> plt.xticks = 5
>>> plt = importlib.reload(plt)
>>> plt.xticks
<function matplotlib.pyplot.xticks>