这个问题严格关注优雅的编程。
我在Python 3中实现了dozenal(base-12)数字(它们分别为0,1,2,...,8,9,*,#,10)。
我打算让他们采取与常规投注和浮动非常相似的行为:
>>> a = Dozenal(1000)
>>> a
DozenalInt('6#4')
>>> b = Dozenal(80.9)
>>> b
DozenalFloat('68.X9724972497249725')
>>> isinstance(a, Dozenal) and isinstance(b, Dozenal)
True
>>> isinstance(a, DozenalInt)
True
>>> isinstance(a, DozenalFloat)
False
>>> type(a)
DozenalInt
到目前为止,由于新的类实例无法创建其他类,因此我认为Dozenal()
必须是工厂函数,它根据参数返回DozenalInt
或DozenalFloat
个对象。
但是,我如何使Dozenal
成为DozenalInt
或DozenalFloat
的超类,同时与工厂函数同名?
或者我走错了路?
出于美学原因,相同的名字对我很重要。