Python 列舉變數的使用

2021-08-22 12:02:50 字數 1716 閱讀 1930

專案中需要大量用到列舉變數,但我們希望可以根據指定的字串,建立對應的列舉變數,並將列舉值作為儲存值

場景:客戶端傳送的訊息包帶有"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.變數的組成 三...