Python:为新实例挑选适当子类的超类

时间:2017-05-23 20:51:29

标签: python class factory superclass

这个问题严格关注优雅的编程。

我在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()必须是工厂函数,它根据参数返回DozenalIntDozenalFloat个对象。

但是,我如何使Dozenal成为DozenalIntDozenalFloat的超类,同时与工厂函数同名?

或者我走错了路?

出于美学原因,相同的名字对我很重要。

0 个答案:

没有答案