看了这篇手痒,也来写写看。
顺便练习python的物件导向。(因为我很少用)
目标,将一个字串转换成 Hans 物件,利用 hans 属性存取,将字串中的数字转成正楷国字,并保有 str 的方法。
# Hans物件,继承str,并初始化。class Hans(str):def __init__(self, string=""):super().__init__()# 要动态增加的方法def hans(string):import reh = ["零", "壹", "贰", "参", "肆", "伍", "陆", "柒", "捌", "玖"]for i in re.findall(r"\d", string):string = string.replace(i, h[int(i)])return string# 将 hans 属性化,并动态增加至 HansHans.hans = property(hans)# 输出为「EEE测试壹贰参」,可以看到可以使用了 str 的内建方法 upper()print(Hans("eee测试123").hans.upper())
附记:python内建物件不可以附加方法,所以不能用
str.hans = property(hans)
会报错