6.4.2 案例精选
- 例6-1:自定义数组。在MyArray.py文件中,定义了一个数组类,重写了一部分特殊方法以支持数组之间、数组与整数之间的四则运算以及内积、大小比较、成员测试和元素访问等运算符。
class MyArray: # 在内部封装/隐藏了一个列表
'''All the elements in this array must be numbers'''
def __IsNumber(self,n): #定义了一个私有的成员方法
return isinstance(n,(int,float,complex))
def __init__(self,*args): #类的构造方法,‘*’可变长度参数
if not args:
self.__value = [] #如果传值不是int,float,complex则给个空列表包装成数组
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):
#数组中所有元素都与数字n相加
b = MyArray() #构建一个空数组
b.__value = [item+n for item in self.__value] #列表推导式
return b
elif isinstance(n,MyArray): #MyArray是一个数组类型
if len(n.__value) == len(self.__value):