1. '''自定义数组类,实现数组中数字之间的四则运算,内积运算,大小比较,数组元素访问修改及成员测试等功能'''
  2. class MyArray:
  3. '''保证输入值为数字元素(整型,浮点型,复数)'''
  4. def ___isNumber(self, n):
  5. if not isinstance(n,(int,float,complex)):
  6. return False
  7. return True
  8. #构造函数,进行必要的初始化
  9. def __init__(self,*args):
  10. if not args:
  11. self.__value = []
  12. else:
  13. for arg in args:
  14. if not self.___isNumber(arg):
  15. print('All elements must be numbers')
  16. return
  17. self.__value = list(args)
  18. @property
  19. def getValue(self):
  20. return self.__value
  21. #析构函数,释放内部封装的列表
  22. def __del__(self):
  23. del self.__value
  24. #重载运算符+
  25. def __add__(self, other):
  26. '''数组中每个元素都与数字other相加,或者两个数组相加,得到一个新数组'''
  27. if self.___isNumber(other):
  28. #数组与数字other相加
  29. b = MyArray()
  30. b.__value = [item + other for item in self.__value]
  31. return b
  32. elif isinstance(other,MyArray):
  33. #两个数组对应元素相加
  34. if (len(other.__value) == len(self.__value)):
  35. c = MyArray()
  36. c.__value = [i+j for i,j in zip(self.__value,other.__value)]
  37. return c
  38. else:
  39. print('Lenght no equal')
  40. else:
  41. print('Not supported')
  42. #重载运算符-
  43. def __sub__(self, other):
  44. '''数组元素与数字other做减法,得到一个新数组'''
  45. pass
  46. #重载运算符*
  47. def __mul__(self, other):
  48. '''数组元素与数字other做乘法,或者两个数组相乘,得到一个新数组'''
  49. pass
  50. #重载数组len,支持对象直接使用len()方法
  51. def __len__(self):
  52. return len(self.__value)
  53. #支持使用print()函数查看对象的值
  54. def __str__(self):
  55. return str(self.__value)
  56. if __name__ == "__main__":
  57. print('Please use me as a module.')
  58. x = MyArray(1,12,15,14,1)
  59. print('%s\n array lenghts:%d'%(x,len(x)))
  60. x = x+2
  61. 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. python接口自动化(四)--接口测试工具介绍(详解)

    简介 “工欲善其事必先利其器”,通过前边几篇文章的介绍,大家大致对接口有了进一步的认识.那么接下来让我们看看接口测试的工具有哪些. 目前,市场上有很多支持接口测试的工具.利用工具进行接口测试,能够提供 ...

  2. 微信公众号开发C#系列-9、多公众号集中管理

    1.概述 通过前面8篇关于微信开发相关文章的学习,我们已经对微信常用开发有了一个比较深入的了解.前面的文章都是基于某一特定公众号的,在现实业务中同一单位个体运营着不至一个公众号,此时就需要对多个公众号 ...

  3. [翻译] 使用 Python 创建你自己的 Shell:Part II

    目录 使用 Python 创建你自己的 Shell:Part II 原文链接与说明 步骤 4:内置命令 最后的想法 使用 Python 创建你自己的 Shell:Part II 原文链接与说明 htt ...

  4. 浅谈mybatis如何半自动化解耦

    在JAVA发展过程中,涌现出一系列的ORM框架,JPA,Hibernate,Mybatis和Spring jdbc,本系列,将来研究Mybatis. 通过研究mybatis源码,可将mybatis的大 ...

  5. 【译】.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容

      .NET Core 3.0 Preview 3已经推出,它包含了一系列关于ASP.NET Core的新的更新. 下面是该预览版的更新列表: Razor组件改进: 单项目模板 新的Razer扩展 E ...

  6. [orleans2.1]这是你没玩过的船新版本

    不知不觉orleans就发布到2.1版本的,但是说也奇怪orleans越是完善我发现园子相关的博客就越少,大概是大佬都在美滋滋用在生产环境,不屑于玩demo了吧. 但是小弟不才还是只会玩demo,所以 ...

  7. python 自定义模块的发布和安装

    [学习笔记] 自定义模块 使用的是pycharm 说白了就是.py文件都可以作为模块导入,像定义一个文件 名字为Mycode __all__ = ["add","sub& ...

  8. js常用JSON数据操作

    JSON字符串: var  str = '{"name": "jack", "age": 13}'; JSON对象: var obj = { ...

  9. Markdown 7min快速入门

    目录 概述 宗旨 兼容 特殊字符自动换行 区块元素 段落和换行 标题 区块引用 列表 代码区块 分隔线 区段元素 链接 强调 代码 图片 其他 表格 删除线 注脚 锚点 反斜杠 自动链接 参考文献 正 ...

  10. fab 菜单实现之前传-钟表表盘

    个人很喜欢谷歌的material design,很喜欢但是没有动手弄过,今天想动手操作一下Floating Action Button菜单,网上有很多种:圆形.扇形.射线.直线等.我想在一个例子中用到 ...