Вы можете получить класс из int
в Python, например. class MyInt(int)
, но этот тип в python неизменен (вы не можете изменить значение) после его создания.
Вы можете сделать что-то вроде этого:
class MyInt:
def __init__(self, i, max=None, min=None):
self.max = max
self.min = min
self.set(i)
def set(self, i):
if i > self.max: raise ValueError
if i < self.min: raise ValueError
self.i = i
def toInt(self):
return self.i
def __getattr__(self, name):
# Forward e.g. addition etc operations to the integer
# Beware that e.g. going MyInt(1)+MyInt(1)
# will return an ordinary int of "2" though
# so you'd need to do something like
# "result = MyInt(MyInt(1)+MyInt(1))
method = getattr(self.i, name)
def call(*args):
L = []
for arg in args:
if isinstance(arg, MyInt):
L.append(arg.toInt())
else: L.append(arg)
return method(*L)
return call
Может быть лучше использовать обычные функции проверки в зависимости от того, что вы хотите, хотя, если это проще.
РЕДАКТИРОВАТЬ : работает сейчас - Возврат к более простой более ранней версии, с добавлением и т.д. функций, которые возвращают другие экземпляры MyInt, просто не стоит: -)