專案中需要大量用到列舉變數,但我們希望可以根據指定的字串,建立對應的列舉變數,並將列舉值作為儲存值
場景:客戶端傳送的訊息包帶有"android"字串,用以說明當前移動端系統型別,伺服器端需要為其建立對應的列舉變數,最終將列舉值(0或1)存入資料庫中
定義乙個抽象的列舉類作為父類:
class basetupleenum(enum):
def __init__(self, desc, val):
self.desc = desc
self.val = val
def get_desc(self):
return self.desc
def get_value(self):
return self.val
@classmethod
def get_values(cls):
values =
for attr in cls:
return values
@classmethod
def get_descs(cls):
descs =
for attr in cls:
return descs
父類的init方法可以看出,每個basetupleenum列舉型別,包含desc和val兩個屬性,desc為我們要描述的字串,val為該列舉變數對應的列舉值
定義具體的列舉型別:
class ostypeenum(basetupleenum):
android = ("android", 0)
ios = ("ios", 1)
測試用例:
class testbaseenum(unittest.testcase):
def test_values(self):
expected =frozenset((ostypeenum.ios.get_value(),ostypeenum.android.get_value()))
actual = frozenset(ostypeenum.values())
print (ostypeenum.values())
self.assertsetequal(expected, actual)
def test_value_in(self):
value = 1
self.asserttrue(value in ostypeenum.values())
def test_value_equal(self):
value = 1
self.asserttrue(value == ostypeenum.ios.get_value())
if __name__ == '__main__':
test = testbaseenum()
test.test_values()
test.test_value_in()
test.test_value_equal()
print ("<----------------->")
print (ostypeenum.ios.get_desc())
print (ostypeenum.ios.get_value())
特殊列舉型別小結:
1.定義適用的列舉型別基類
2.繼承基類,定義具體的子類
3.基類中封裝常用的方法
python列舉優點 使用列舉的好處?
如果您想知道效率,有幾種工具可以用來檢查哪個解決方案 演算法更有效。這稱為分析。在 分析的第乙個目的是測試乙個有代表性的系統,以確定什麼是慢的 或者使用太多的ram,或者導致過多的磁碟i o或網路i o 在 分析通常會增加開銷 10倍到100倍的減速可能是典型的 而且您仍然希望您的 盡可能像在現實世...
python 使用列舉類
當我們需要定義常量時,乙個辦法是用大寫變數通過整數來定義,例如月份 jan 1 feb 2 mar 3 nov 11 dec 12好處是簡單,缺點是型別是int,並且仍然是變數。更好的方法是為這樣的列舉型別定義乙個class型別,然後,每個常量都是class的乙個唯一例項。python提供了enum...
Python變數的使用
目錄1.什麼是變數?一種變化的量,量是記錄世界上的狀態,變指得是這些狀態是會變化的。2.為什麼有變數?因為電腦程式的執行就是一系列狀態的變化。3.定義變數 在python中定義變數 name magua age 24 gender man height 168 weight 2504.變數的組成 三...