導入的文件/類,就像標題所說,我得到一組導入,全部導入一個類,全部與腳本運行在同一文件夾中:重新加載/重新導入使用從* import *
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沒有重裝IIRC但imp.reload(),但它似乎沒有工作,
它只是拋出一個錯誤,說這不是一個模塊(它一類,所以它不't work)
在導入這些類的每個小編輯之後,我需要重新啓動腳本
是否沒有辦法重新加載/重新導入類以顯示編輯的效果,而無需啓動腳本或重寫大部分腳本,以便imp.reload()起作用?
python3,Linux的(但更喜歡,如果還對窗口工作)
EDIT1:
例如:如果我使用:
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
IDK爲什麼它這一點,但它是因爲它發生在一個while循環?
編輯2:
文件名:system。潘岳:改試驗後
class system:
def temp():
temperature = open("/sys/class/thermal/thermal_zone0/temp","r").read()
temperature = temperature[:2]
return(temperature+"°C")
:
改試驗前通過sys.modules
模塊
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等,並且不會與您的模塊名稱衝突,這會使事情變得更簡單。 – abarnert
好吧,我從來沒有真正使用過Python增強建議,我認爲編寫易於理解和記憶的方式會更好,我儘量減少一切,但要保持它像indents/newlines和變量/函數一樣排序(使用2個空格縮進,如果文件只有幾行,有時候會有1個空格縮進),因爲我的任何代碼都不太可能被其他人使用,基本上任何意思都是由於錯誤的大小寫造成的較小的鍵入和錯誤 –
「我從來沒有真正使用過Python增強建議「沒有任何意義。 PEP是Python 2.0及更高版本中所做重大更改的記錄。請參閱[什麼是PEP?](http://www.python.org/dev/peps/pep-0001/#what-is-a-pep)。無論如何,即使你認爲你的代碼不太可能被另一個人使用,如果你想將它發佈到SO上並尋求幫助,它仍然是很重要的,這對其他人來說是很重要的。最後,創造你自己的命名風格直接導致你的問題 - 在範圍內你不能有兩件名爲'lvl'的東西。 – abarnert