首页 > 编程语言 > 详细

【复试 python程序设计 第2版 董付国】python特殊方法与运算符重载

时间:2020-03-21 01:26:15      阅读:63      评论:0      收藏:0      [点我收藏+]

技术分享图片

1. 实例方法

1.1 __add__(self, n)

# -*- 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)

技术分享图片

1.2 __sub__

    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

技术分享图片

1.3 __repr__:可直接输出对象[区别__str__)

技术分享图片

技术分享图片

 如果没有写这个函数:

技术分享图片

    # 直接使用对象作为语句时调用该函数
    def __repr__(self):
        return repr(self.__value)

1.4 __str__:可直接输出对象

def __str__(self):
return str(self.__value)

 

 

 

【复试 python程序设计 第2版 董付国】python特殊方法与运算符重载

原文:https://www.cnblogs.com/douzujun/p/12535830.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!