一个关于python定制类的例子

class Time(object):
    def __init__(self, hr, min):
        self.hr = hr
        self.min = min

    def __str__(self):
        return ‘%d:%d‘ %(self.hr, self.min)

    __repr__ = __str__

    # 重载加法
    def __add__(self, other):
        m = self.min + other.min
        h = self.hr + other.hr
        if m>=60:
            m -= 60
            h += 1
        if h>=24:
            h -= 24
        return self.__class__(h, m)

    # 重载‘+=‘方法
    def __iadd__(self, other):
        self.hr += other.hr
        self.min += other.min
        if self.min >= 60:
            self.min -= 60
            self.hr += 1
        if self.hr >=24:
            self.hr -= 24
        return self

这样就能实现时间的加法。

>> a=Time(3, 6)
>> b=Time(20, 52)
>> a
3:6
>> a+b
23:58
>> a+=b
>>a
23:58

原文地址:https://www.cnblogs.com/00986014w/p/8455845.html

时间: 2024-10-08 11:13:41

一个关于python定制类的例子的相关文章

python 定制类

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: >>> class Student(object): ... def __init__(self, name):

Python定制类

1.__str__ class Student(object): def __init__(self, name): self._name = name m = Student("michael") print m <__main__.Student object at 0x0000000003280EF0> 为了使print类的结果格式更加方便阅读 重写__str__(self) class Student(object): def __init__(self, name

Python 定制类 特殊方法

1.特殊方法 定义在class中 不需要直接调用,python的某些函数或操作符会自动的调用对应的特殊方法. 如定义了person类,使用print p 语句打印person类的实例时,就调用了特殊方法__str__() 此时就需要在person类中实现这个方法. 使用特殊方法时注意: 只需要编写用到的特殊方法 有关联性的特殊方法都必须实现(如__getattr__,__setattr__,delattr__) 2.python中 __str__和__repr__ __str__()用于显示给用

python定制类(以Fib类为例)

class Fib(object): def __init__(self): self.a, self.b = 0, 1 def __iter__(self): return self def __next__(self): #如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个__iter__()方法,该方法返回一个迭代对象, # 然后,Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIterati

7.qfilesystemmodel rowcount 为什么为0? 一个简单的model类的例子

任务: 1.新建一个空的mainwindow项目 2.debug下编译得到一个文件夹,应用程序输出这个文件夹中的文件(不显示文件夹中的文件夹) 3.使用QFileSystemModel完成. 本例显示结果: Makefile Makefile.Debug Makefile.Release ui_mainwindow (debug和release是文件夹,不在应用程序输出中) mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #inclu

python中的定制类(转载)

body { font-family: 微软雅黑,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bold; } h3 { fon

python学习第十七天 --定制类

何为定制类? Python的class允许定义许多特殊方法,可以让我们非常方便地生成特定的类.在类中应用或者重写python的特殊方法,得到的类,就是定制类. 大家都知道print的用法.见下面例子 >>> lst = [2,3,4] >>> print lst [2, 3, 4] >>> class Animal(object): pass >>> a = Animal() >>> print a <__ma

python学习——定制类

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: >>> class Student(object): ... def __init__(self, name):

python 的定制类

看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: >>> class Student(object): ... def __init__(self, name):