# -*- coding: utf-8 -*- # 数组类,支持数组与数字之间的四则运算 # 数组之间的 加法运算,内积运算和大小比较 # 数组元素访问和修改 # 成员测试 class MyArray: __value = [] __size = 0 # 判断是否是数字 def __IsNumber(self, n): if (not isinstance(n, int)) and (not isinstance(n, float)) and (not isinstance(n, complex)): return False else: return True # 初始化 def __init__(self, *args): if not args: self.__value = [] else: for arg in args: if not self.__IsNumber(arg): print(‘All elements must be numbers‘) return self.__value = list(args) # 数组中每个元素都与数字n相加,或两个数组相加 def __add__(self, n): if self.__IsNumber(n): b = MyArray() for v in self.__value: b.__value.append(v + n) return b elif isinstance(n, MyArray): if len(n.__value) == len(self.__value): c = MyArray() for i, j in zip(self.__value, n.__value): c.__value.append(i + j) return c else: print(‘Length not equal‘) else: print(‘Not supported‘)
def __sub__(self, n): if not self.__IsNumber(n): print("not number") return b = MyArray() for v in self.__value: b.__value.append(v - n) return b
如果没有写这个函数:
# 直接使用对象作为语句时调用该函数 def __repr__(self): return repr(self.__value)
def __str__(self):
return str(self.__value)
【复试 python程序设计 第2版 董付国】python特殊方法与运算符重载
原文:https://www.cnblogs.com/douzujun/p/12535830.html