【发布时间】:2019-06-28 10:53:48
【问题描述】:
我编写了一个可以处理任意精度整数的类(仅用于学习目的)。该类采用整数的字符串表示并将其转换为BigInt 的实例以供进一步计算。
您经常需要数字 零 和 一,所以我认为如果班级可以返回这些数字会很有帮助。我尝试了以下方法:
class BigInt():
zero = BigInt("0")
def __init__(self, value):
####yada-yada####
这不起作用。错误:“名称 'BigInt' 未定义”
然后我尝试了以下方法:
class BigInt():
__zero = None
@staticmethod
def zero():
if BigInt.__zero is None:
BigInt.__zero = BigInt('0')
return BigInt.__zero
def __init__(self, value):
####yada-yada####
这实际上非常有效。我不喜欢zero 是一种违反直觉的方法(因此必须使用BigInt.zero() 调用),因为它应该只引用一个固定值。
所以我尝试将zero 更改为一个属性,但随后编写BigInt.zero 返回类property 而不是BigInt 的实例,因为使用了装饰器。由于类型错误,该实例无法用于计算。
有没有办法解决这个问题?
【问题讨论】:
-
你不能创建一个继承那个类的类。从而实例化您的子类,它可以返回带有
"0"作为值的父类的活动实例?class initator(BigInt): def __init__(self): super(initator, self).__init__("8").
标签: python oop properties