• python 版本号比较 重载运算符


    # -*- coding: utf-8 -*-
    
    
    class VersionNum(object):
        """
        版本号比较
        默认版本以“.”分割,各位版本位数不超过3
        例一:
            235.458.95 由“.”分割版本,235、458、95都不能大于999
            如果有版本要超过3位,需指定max_digit,但注意比较时,两个对比的max_digit必须相等!
        例二:
            if VersionNum('1.20.3') > VersionNum('1.9.3'): ...
        """
        def __init__(self, version, delimiter='.', max_digit=3):
            v_num = 0
            v_list = version.split(delimiter)
            for i, num in enumerate(v_list[-1::-1]):
                if len(num) > max_digit:
                    raise ValueError('version can not greater than max_digit')
                v_num += int(num) * (10 ** (i*max_digit))
            self.max_digit = max_digit
            self.data = v_num
    
        def __repr__(self):
            """
            自我描述
            """
            return "VersionNum(%d)" % self.data
    
        def __eq__(self, other):
            self.check_max_digit(other)
            return self.data == other.data
    
        def __ne__(self, other):
            self.check_max_digit(other)
            return self.data != other.data
    
        def __lt__(self, other):
            self.check_max_digit(other)
            return self.data < other.data
    
        def __le__(self, other):
            self.check_max_digit(other)
            return self.data <= other.data
    
        def __gt__(self, other):
            self.check_max_digit(other)
            return self.data > other.data
    
        def __ge__(self, other):
            self.check_max_digit(other)
            return self.data >= other.data
    
        def check_max_digit(self, other):
            if self.max_digit != other.max_digit:
                raise ValueError('The max_digit of the two versions of the comparison should be equal')
  • 相关阅读:
    在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
    微信公众平台开发(71)OAuth2.0网页授权
    IOS与安卓的远程调试
    解密和解压浏览器上加密的js文件
    appium 学习和环境搭建
    远程桌面工具 TeamViewer
    typescript 学习
    webstore 与 热编译的配置冲突
    CSS 温故而知新 断句失败
    自动化测试 python2.7 与 selenium 2 学习
  • 原文地址:https://www.cnblogs.com/aaron-agu/p/11310985.html
Copyright © 2020-2023  润新知