• Python里的方法


    1.__str__()要把一个类的实例变成 str,就需要实现特殊方法__str__(),因为 Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员。

    class Person(object):
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
        def __str__(self):
            return '(Person: %s, %s)' % (self.name, self.gender)

    2.__cmp__()对 int、str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法 __cmp__():

    class Student(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
        def __str__(self):
            return '(%s: %s)' % (self.name, self.score)
        __repr__ = __str__
    
        def __cmp__(self, s):
            if self.name < s.name:
                return -1
            elif self.name > s.name:
                return 1
            else:
                return 0

    上述 Student 类实现了__cmp__()方法,__cmp__用实例自身self和传入的实例 s 进行比较,如果 self 应该排在前面,就返回 -1,如果 s 应该排在前面,就返回1,如果两者相当,返回 0。

    3.len()

    如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。

    要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。

    class Students(object):
        def __init__(self, *args):
            self.names = args
        def __len__(self):
            return len(self.names)

    只要正确实现了__len__()方法,就可以用len()函数返回Students实例的“长度”:

    >>> ss = Students('Bob', 'Alice', 'Tim')
    >>> print len(ss)
    3
  • 相关阅读:
    【LOJ #3058】「HNOI2019」白兔之舞(单位根反演+矩阵快速幂+MTT)
    【LOJ #2289】「THUWC 2017」在美妙的数学王国中畅游(LCT+泰勒展开)
    【LOJ #3193】「ROI 2019 Day2」机器人高尔夫球赛(DP+Map)
    【Codeforces 1119H】Triple(FWT)
    PKUWC2020 (旅)游记
    多项式算法合集
    redis入门学习
    servelt
    spring容器原理学习
    Spring MVC
  • 原文地址:https://www.cnblogs.com/cc233/p/7161574.html
Copyright © 2020-2023  润新知