嗨,我最近開始使用 python 中的類,并且有一個代碼,我必須使用類來轉換溫標。例如,您選擇兩個刻度并在第一個刻度中給出溫度,第二個刻度中的溫度將顯示在輸出中。一種方法是使用 if 條件,例如,我可以從用戶那里獲得輸入,然后檢查條件呼叫所需的方法:
class temp_convertor:
def c_f(c):
f = 1.8*(c) 32
return f
def f_c(f):
c = (f-32)*(5/9)
return c
def c_k(c):
k = c 273.15
return k
def k_c(k):
c = k-273.15
return c
def c_r(c):
r = temp_convertor.c_f(c) 459.67
return r
def r_c(r):
c = temp_convertor.f_c(r-459.67 )
return c
def k_r(k):
r = temp_convertor.c_r(temp_convertor.k_c(k))
return r
def r_k(r):
k = temp_convertor.c_k(temp_convertor.r_c(r))
return k
a = input("scale1,scale2: ")
if a == "f,c":
temp_convertor.f_c(float(input("temp? ")))
elif a == "c,f":
temp_convertor.c_f(float(input("temp? ")))
# and for every convertor I should continue checking conditions :(
但我之前使用 global()[name] 來呼叫函式,例如:
def apple(a):
print(2*a)
globals()[input("type apple if you want to double your number: ")](int(input("number: ")))
輸出是這樣的:
type apple if you want to double your number: apple
number: 5
10
但我不能在這里使用它:
class temp_convertor:
def c_f(c):
f = 1.8*(c) 32
return f
def f_c(f):
c = (f-32)*(5/9)
return c
def c_k(c):
k = c 273.15
return k
def k_c(k):
c = k-273.15
return c
def c_r(c):
r = temp_convertor.c_f(c) 459.67
return r
def r_c(r):
c = temp_convertor.f_c(r-459.67 )
return c
def k_r(k):
r = temp_convertor.c_r(temp_convertor.k_c(k))
return r
def r_k(r):
k = temp_convertor.c_k(temp_convertor.r_c(r))
return k
print(temp_convertor.globals()[input("scale1_scale2")](float(input("temp? "))))
錯誤是: AttributeError: type object 'temp_convertor' has no attribute 'globals' 我想知道第二種解決方案是否可行,如果沒有,是否有更短的解決方案?感謝您閱讀本文!
uj5u.com熱心網友回復:
采用
getattr(temp_convertor, input('scale1_scale2: '))(float(input('temp? ')))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/432204.html
標籤:python-3.x 细绳 班级 方法 全局变量
