## 函数重写 abs() int() len()
class MyInteger:
def __init__(self,data):
self.data = data
def __repr__(self):
return "MyInteger({})".format(self.data)
def __abs__(self):
print("__abs__ are called")
if self.data < 0:
return MyInteger(-self.data)
else:
return MyInteger(self.data)
def __len__(self):
print("__len__ are called")
return 100
def __int__(self):
print("__int__ are called")
return int(self.data)
print(abs(MyInteger(10)))
print(abs(MyInteger(-10)))
print(len(MyInteger(100)))
print(int(MyInteger(100)))
## 函数重写 bool 函数
class MyLst:
def __init__(self, iterable):
self.data = [x for x in iterable]
def __repr__(self):
return "Mylst({})".format(self.data)
def __len__(self):
print("__len__ are called")
return len(self.data)
def __bool__(self):
print("__bool__ are called")
return sum(self.data) != 0
print(bool(MyLst(range(10))))
print(bool(MyLst([1,5,-6])))
print(bool(MyLst([])))