'''自定义数组类,实现数组中数字之间的四则运算,内积运算,大小比较,数组元素访问修改及成员测试等功能'''
class MyArray:
'''保证输入值为数字元素(整型,浮点型,复数)'''
def ___isNumber(self, n):
if not isinstance(n,(int,float,complex)):
return False
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)
@property
def getValue(self):
return self.__value
#析构函数,释放内部封装的列表
def __del__(self):
del self.__value
#重载运算符+
def __add__(self, other):
'''数组中每个元素都与数字other相加,或者两个数组相加,得到一个新数组'''
if self.___isNumber(other):
#数组与数字other相加
b = MyArray()
b.__value = [item + other for item in self.__value]
return b
elif isinstance(other,MyArray):
#两个数组对应元素相加
if (len(other.__value) == len(self.__value)):
c = MyArray()
c.__value = [i+j for i,j in zip(self.__value,other.__value)]
return c
else:
print('Lenght no equal')
else:
print('Not supported')
#重载运算符-
def __sub__(self, other):
'''数组元素与数字other做减法,得到一个新数组'''
pass
#重载运算符*
def __mul__(self, other):
'''数组元素与数字other做乘法,或者两个数组相乘,得到一个新数组'''
pass
#重载数组len,支持对象直接使用len()方法
def __len__(self):
return len(self.__value)
#支持使用print()函数查看对象的值
def __str__(self):
return str(self.__value)
if __name__ == "__main__":
print('Please use me as a module.')
x = MyArray(1,12,15,14,1)
print('%s\n array lenghts:%d'%(x,len(x)))
x = x+2
print(x.getValue)

python3.4中自定义数组类(即重写数组类)的更多相关文章

  1. python3.4中自定义wsgi函数,make_server函数报错问题

    别的不多说,先上代码 #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_ ...

  2. Python中自定义类如果重写了__repr__方法为什么会影响到str的输出?

    这是因为Python3中,str的输出是调用类的实例方法__str__来输出,如果__str__方法没有重写,则自动继承object类的__str__方法,而object类的__str__方法是调用_ ...

  3. C#中自定义类数组和结构数组的使用

    如有雷同,不胜荣幸,若转载,请注明 C#中自定义类数组和结构数组的使用 最近在很多项目中发现很多时候给定的数组要实现某个逻辑或处理很是麻烦,一维数组,二维数组,,,等等需要经过n多转换,还不如自己写一 ...

  4. 读取SequenceFile中自定义Writable类型值

    1)hadoop允许程序员创建自定义的数据类型,如果是key则必须要继承WritableComparable,因为key要参与排序,而value只需要继承Writable就可以了.以下定义一个Doub ...

  5. String类中的equals是如何重写的

    我们知道String中的equals方法是被重写过的,因为object的equals方法是比较的对象的内存地址,而String的equals方法比较的是对象的值. 首先几个知识点: 基本数据类型==比 ...

  6. 关于MapReduce中自定义分区类(四)

    MapTask类 在MapTask类中找到run函数 if(useNewApi){       runNewMapper(job, splitMetaInfo, umbilical, reporter ...

  7. 创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法)。

    创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法). ackage com.chuoji.text01; pub ...

  8. Python3.x中bytes类型和str类型深入分析

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  9. VBA中自定义类和事件的(伪)注册

    想了解一下VBA中自定义类和事件,以及注册事件处理程序的方法. 折腾了大半天,觉得这样的方式实在称不上“注册”,所以加一个“伪”字.纯粹是瞎试,原理也还没有摸透.先留着,有时间再接着摸. 做以下尝试: ...

随机推荐

  1. spring的核心组件及作用(一)

    Spring的核心组件有: Context     Core     Bean. 如果要在这三个核心组件上挑出一个最核心的组件,那就是Bean组件了. Spring的特性功能有:WEB ORM AOP ...

  2. 接口自动化:HttpClient + TestNG + Java(四) - 封装和测试post方法请求

    在上一篇中,我们对第一个自动化接口测试用例做了初步优化和断言,这一篇我们处理POST请求. 4.1 发送POST方法请求 post方法和get方法是我们在做接口测试时,绝大部分场景下要应对的主要方法. ...

  3. Vue2.0源码阅读笔记(一):选项合并

      Vue本质是上来说是一个函数,在其通过new关键字构造调用时,会完成一系列初始化过程.通过Vue框架进行开发,基本上是通过向Vue函数中传入不同的参数选项来完成的.参数选项往往需要加以合并,主要有 ...

  4. k8s网络之Flannel网络

    k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划 ...

  5. Webpack 4教程 - 第四部分,使用SplitChunksPlugin分离代码

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.原文出处:https://wanago.io/2018/06/04/code-splitting-with-s ...

  6. java_IO流

    IO流概述及分类 Reader  InputStream  OutputStream  Writer都是Object的直接子类 字节流: 字节输入流 InputStream(抽象类) |---File ...

  7. linux的一些命令,面试经常碰到的

    1 查询所有java进程ps -A | grep java解释一下这个命令的意思,ps 是查看系统当前进程的命令,参数 -A(注意,是大写,linux中是区分大小写的)是显示所有程序,| 这个是管道符 ...

  8. Spring Boot Security OAuth2 实现支持JWT令牌的授权服务器

    概要 之前的两篇文章,讲述了Spring Security 结合 OAuth2 .JWT 的使用,这一节要求对 OAuth2.JWT 有了解,若不清楚,先移步到下面两篇提前了解下. Spring Bo ...

  9. 外观模式 门面模式 Facade 结构型 设计模式(十三)

    外观模式(FACADE) 又称为门面模式   意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统 ...

  10. Can`tconnect to MySQL server on 'localhost'(10061)问题解决

    今天在登陆MySQL是登录不上出现了“Can`tconnect to MySQL server on ‘localhost’(10061)”的问题,于是便在网上到处搜资料查原因:但好多都是:让删除my ...