我希望這個問題很有意義,我一直在努力弄清楚這兩個完整的日子。Python中的每個實例的輸入,測試和輸出結果
我想創建一個非常小的腳本,然後我可以將其轉換爲Flask Web應用程序,以便比較SPECint處理器分數。
一點背景:
從specint.org,我可以下載包含有關處理器和他們的服務器基準的基準信息的CSV文件。我的應用程序的想法是做到以下幾點:
向用戶提供他們所需要的基準(CINT或者RINT),服務器 模型,以及他們感興趣的處理器必須這樣做 兩次,服務器1和服務器2,所以我可以比較它們。
我需要檢查,他們正在進入的信息是正確的,即 如果有人爲處理器名稱XYZ進入它應該引發 錯誤,並提示輸入一個有效的查詢。爲此,我計劃 將整個數據庫的一個版本轉儲到我自己的數據庫中,因此我可以在從服務器上實際下載 的csv文件之前執行檢查。
如果輸入的信息是有效的,我會動態生成正確的url用於下載和直接從SPECint的服務器讀取包含基準評分信息的csv文件。
一旦我已經下載並處理了兩臺服務器的信息,我會應用一些簡單的數學運算並返回結果,如下所示:「服務器1比服務器2快10%」或類似的東西。
正如你可能想象的那樣,這將需要很多重複的代碼,所以它似乎是一個類的完美用例。我一直在進行一些測試,結果很有希望。
但是,我的問題是,我一直無法弄清楚如何捕獲用戶輸入,測試輸入,下載相應的csv文件,並且按照每個實例的方式傳遞用戶輸入,而無需在某處複製代碼。我一直在尋找和搜索,似乎@classmethod
是我需要的,但我不確定,因爲它的使用仍然似乎對我來說很深奧(我是一個新手)(參考:Example of Class with User Input)
例如,這是有點兒工作:
我的類:
class Baseline:
def __init__(self, benchmark, model, processor):
self.benchmark = benchmark
self.model = model
self.processor = processor
捕獲並打印實例結果。
old_server = inputs.Baseline(test=input("Select benchmark: "),
model=input("Enter model: "),
processor=input("Enter processor: ")
)
new_server = inputs.Baseline(test=input("Select benchmark: "),
model=input("Enter model: "),
processor=input("Enter processor: ")
)
print(old_server.benchmark)
print(old_server.model)
print(new_server.benchmark)
print(new_server.model)
正如你所看到的,我已經重複的代碼,而是,我想從類中所做的一切,所以我可以簡單地調用它的實例來捕撈,測試,下載,並返回結果。正如我剛纔所說,似乎@classmethod
是答案,但我會很感激任何指導,希望有一些示例代碼,以便我可以完全掌握這些概念。
乾杯烏里。我會試試這個,還有@ nutmeg64的回答,並檢查哪一個最適合我的用例。我會報告回來,一旦我認爲這一切:) –