【发布时间】:2013-06-18 21:10:30
【问题描述】:
好吧,正如标题所说,我得到了一组导入,所有导入一个类,都与运行它的脚本在同一个文件夹中:
from lvl import lvl
from get import get
from image import image
from video import vid
from video import MLStripper
from system import system
from setting import setting
from listsearch import lists
python3 没有 reload iirc 但有 imp.reload() 但它似乎不起作用,
它只是抛出一个错误,说它不是一个模块(它是一个类,所以它不起作用)
在导入的那些类中的每一个小编辑之后,我都需要重新启动脚本
有没有办法重新加载/重新导入类以显示编辑的效果而无需启动脚本或重写大部分脚本以便 imp.reload() 工作?
python3, linux(但如果它也适用于窗口则更喜欢)
编辑1:
示例:如果我使用:
import system
system.system.temp()
返回:
65°C
如果我将其更改为显示 °F 并使用 imp.reload 重新加载
imp.reload(system)
system.system.temp()
返回:
149°F
所以,如果我使用它,它可以工作
import system as _system
from system import system
system.temp()
返回:
65°C
然后我将其更改为显示 °F 并使用 imp.reload 重新加载
imp.reload(_system)
from system import system
system.temp()
它仍然返回
65°C
但是,如果我这样称呼它:
_system.system.temp()
返回
149°F
我知道为什么会这样,但它是因为它发生在 while 循环中?
编辑2:
文件名:system.py:
在更改测试之前:
class system:
def temp():
temperature = open("/sys/class/thermal/thermal_zone0/temp","r").read()
temperature = temperature[:2]
return(temperature+"°C")
更改测试后:
class system:
def temp():
temperature = open("/sys/class/thermal/thermal_zone0/temp","r").read()
temperature = temperature[:2]
temperature = str(9.0 / 5.0 * int(temperature) + 32).split(".")[0]
return(temperature+"°C")
【问题讨论】:
-
为了将来参考,如果您使用 PEP8 风格的命名,您的类将命名为 Lvl、Image 等,并且不会与您的模块名称冲突,这会使事情变得更简单。
-
好吧,我从来没有真正使用过 Python 增强提案,我认为最好以易于理解和记忆的方式编写代码,并且我尽量减少所有内容,但将其排序为缩进/换行符和变量/function(使用 2 个空格缩进,如果文件只有几行,有时使用 1 个空格缩进),因为我的任何代码都不太可能被其他人使用,基本上任何意味着更少的输入和错误导致的错误案例
-
“我从来没有真正使用过 Python 增强提案”没有任何意义。 PEP 记录了 Python 2.0 及更高版本中所做的每个重大更改。见What is a PEP?。无论如何,即使您认为您的代码不太可能被其他人使用,如果您想将其发布在 SO 上并要求帮助它。最后,发明自己的命名风格直接导致了您的问题——您不能在范围内同时拥有两个名为
lvl的东西。 -
@abarnert 我的命名风格并不直接导致我的问题在这里,事实上我没有导入模块导致这些模块中只有一个类有名称冲突所以我认为不需要它,因为它最终会被类覆盖
-
我不太明白你的编辑版本。如果您认为“这是因为它发生在 while 循环中”,您将不得不向我们展示 while 循环的样子。而且,一般来说,您必须向我们展示您的实际代码。我的猜测是你实际上没有一个类方法
system.system.temp(),而是一个实例方法;你已经创建了一个system.system实例,并且你在that 上调用temp()。在这种情况下,重新加载system没有任何好处;您必须创建新类的新实例。
标签: python linux python-3.x python-import