• Python 中的类的相关操作


    构造函数

    构造函数是任何类都有的特殊方法。当要创建一个类时,就要调用构造函数。他的名字是__init__。init的前后分别是两个下划线。时间类Time的构造函数如下:

    >>> class Time:
    ...     def __init__(self , hours = 0 , minutes = 0 , seconds = 0):
    ...         self.hours = hours;
    ...         self.mintues = minutes;
    ...         self.seconds = seconds;
    ...         
    ...     def printTime(self):
    ...         print str(self.hours)
    ...         
    ...     
    ... 
    >>> now = Time(12,12,43)
    >>> now
    <__main__.Time instance at 0x1783cf8>
    >>> now.printTime()
    12
    >>> 


    操作符重定义

    >>> class RMB:
    ...     def __init__(self,sum = 0.0):
    ...         self.sum = sum;
    ...         
    ...     def __str__(self):
    ...         return str(self.sum);
    ...         
    ...     
    ... 
    >>> a = RMB()
    >>> b = RMB()
    >>> a + b
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    TypeError: unsupported operand type(s) for +: 'instance' and 'instance'
    >>


    我们定义了一个RMB类,然后生成两个实例,这两个实例相加后,显示了一条错误信息,表示实例不能进行相加操作。错误信息的意思是,加发操作暂时不支持两个实例操作数。

    为了使类的实例也可以进行数学操作,我们需要在类的内部重定义新定义的数学操作符,使之支持用户定义的数据类型。很多人会立即意识到这不是C++中的操作符重载吗?在这里我们没有重载这个词。因为C++中的重载比Python中的重定义的概念范围要广的很多,因此,我们使用重定义这个词。下面我们修改这个RMB的类添加__add__ 和__sub__操作

    >>> class RMB:
    ...     def __init__(self , sum = 0.0):
    ...         self.sum = sum;
    ...         
    ...     def __str__(self):
    ...         return str(self.sum);
    ...         
    ...     def __add__(self , other):
    ...         return RMB(self.sum + other.sum);
    ...         
    ...     def __sub__(self,other):
    ...         return RMB(self.sum - other.sum);
    ...         
    ...     
    ... 
    >>> a = RMB(100)
    >>> b = RMB(343)
    >>> a + b
    <__main__.RMB instance at 0x1783e60>
    >>> print a + b
    443
    >>> print a.__add__(b) , a + b
    443 443
    >>> 


  • 相关阅读:
    数字基本数据类型范围比较
    java中float和double的区别
    ASP.NET中javascript与c#互相访问
    Javascript技术之详尽解析event对象
    Java基础-Java中的Calendar和Date类
    逻辑运算符
    JS获取当前时间
    几秒后刷新页面
    【LiteOS】LiteOS任务篇源码分析删除任务函数
    POJ 2385 Apple Catching (DP)
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3196767.html
Copyright © 2020-2023  润新知