Python自定义一个数组类,支持数组之间的四则运算和其他常见方法

class MyArray:    ‘‘‘保证输入的内容是整型、浮点型‘‘‘    def ___isNumber(self, num):        if not isinstance(num, (int,float)):            return False        return True

    #开始写构造函数,接受可变长度的数组    def __init__(self, *args):        if args == None:            self.__value = []        else:            for a in args:                if not self.___isNumber(a):                    print(‘All elements must be number!‘)            #self.__value 是一个数组            self.__value = list(args)

    #打印输出当前的self.__value    def printSelf(self):        #这个self是一个地址        print(self)        #这个self.__value是一个数组        print(self.__value)

    #重载len(Array)这个方法    def __len__(self):        return len(self.__value)

     #append方法    def append(self, other):        self.__value.append(other)        #注意:此处不能够直接return self.__value.append(other)        #这个方法执行后没有返回值        return self.__value

    #重载运算符+    def __add__(self,other):        if self.___isNumber(other):            #如果other 是一个数,则数组里每一个元素都加上other            array = MyArray()            array.__value = [ i + other for i in self.__value]            return array.__value        elif isinstance(other,MyArray):            #如果other 是一个数组,则两个数组对应位置的数相加            if (len(self.__value) == len(other.__value)):                array = MyArray()                array.__value = [i+j for i,j in zip(self.__value,other.__value)]                return array.__value            else:                print(‘The size must be equal!‘)        else:            print(‘Please input a array or a num!‘)

    #重载运算符 / 浮点数除法,返回浮点数    def __truediv__(self,other):        if self.___isNumber(other):            if other == 0:                print("Zero cant be this number!")                return             array = MyArray()            array.__value = [i / other for i in self.__value]            return array.__value        else:            print("It is must be a number except zero!")

    #重载运算符 // 整数除法,返回不大于结果的最大的一个整数    def __floordiv__(self,other):        if isinstance(other,int):            if other == 0:                print("Zero cant be this number!")                return            array = MyArray()            array.__value = [i // other for i in self.__value]            return array.__value        else:            print("Tt is must be a number except zero!")

    #重载运算符% 取余数    def __mod__(self,other):        if isinstance(other,int):            if other == 0:                print("Zero cant be this number!")                return            array = MyArray()            array.__value = [i % other for i in self.__value]            return array.__value        else:            print("Tt is must be a number!")

    #根据数组index查看元素    def __getitem__(self,index):        arrayLength = len(self.__value)        if isinstance(index,int) and (0 <= index <= arrayLength):            return self.__value[index]        else:            print("Index must be a Inteager which is less than", arrayLength-1)

    #查看元素是否在该列表    def __contains__(self,other):        if other in self.__value:            return True        return False

    #数组比较    def __lt__(self,other):        if not isinstance(other,MyArray):            print("It is must be the type of MyArray")            return False        if self.__value < other.__value:            return True        return False

原文地址:https://www.cnblogs.com/motorye/p/10891035.html

时间: 2024-11-08 22:59:51

Python自定义一个数组类,支持数组之间的四则运算和其他常见方法的相关文章

黑马程序员——java——自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序

自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序 import java.util.Comparator; import java.util.Iterator; import java.util.TreeSet; //自定义一个比较器 class Mycompare implements Comparator { @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method s

设计数组类扩展数组的功能

建立专门的数组类处理有关数组的操作 数组是几乎所支持的组织数据的方法.C和C++对数组类型提供了内置支持,使我们利用数组实现软件中需要的各种实用的功能.但是,这种支持仅限于用来读写单个元素的机制.C++不支持数组的抽象abstraction,也不支持对整个数组的操作.例如:把一个数组赋值给另外一个数组,对两个数组进行相等比较或者想知道数组的大小size,等等.对C++而言,数组是从C语言中继承来的,它反映了数据与对其进行操作的算法的分离,有浓厚的过程化程序设计的特征.数组并不是C++语言的一等公

c++primer,自定义一个复数类

1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include<algorithm> 5 #include<cstdio> 6 #include<complex> 7 using namespace std; 8 9 class Complex{ 10 //复数为直角坐标形式,a+bj 11 private: 12 double real; 13 double

如何自定义一个异常类

如何自己定义一个异常类来管理相应的异常? 1) 为这个找一个近似的类作为父类. 2) 在该类中编写两个构造器: a) 默认构造器; b) 带String message参数的构造器且在该构造器中使用 super(message); 语句     来调用父类的构造器完成异常原因的更改. 以下实例为,创建一个小猫对象,其年龄为负数则显示为异常 public class Exception7 { public static void main(String[] args) { Cat c1=null;

自定义一个异常类模板代码实例

一:自定义异常类: package 自定义异常; //或者继承RuntimeException(运行时异常) public class MyException extends Exception { private static final long serialVersionUID = 1L; // 提供无参数的构造方法 public MyException() { } // 提供一个有参数的构造方法 public MyException(String message) { super(mes

第十一篇 自定义一个缓存类(甚用~)

1 //自定义缓存类 2 public class CacheHelper<T> where T:class 3 { 4 private class Entity 5 { 6 public T Value{get;set;} 7 public DateTime Expiretime { get; set; } 8 } 9 private static readonly Dictionary<string, Entity> Dic=new Dictionary<string,E

自定义一个Dialog样式的Activity窗口,切换到Dialog的方法

首先定义一个style 在style里面添加 <style name="MyDialog" parent="@android:Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name=

创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它。

public class Point { private int x; private int y; public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public void Point() { this.x = x; this.y = y; } } packa

12.创建一个Point类,有成员变量x,y,方法getX(),setX(),还有一个构造方 法初始化x和y。创建类主类A来测试它。

package java1; public class Point { int x; int y; Point(int x,int y) { this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } } Point a1=new Point(1,2); { a1.setX(10); System.out.println("X="+a1.getX()+