美文网首页
特殊函数

特殊函数

作者: 黑夜的眸 | 来源:发表于2018-08-07 11:57 被阅读0次

    __str__

    Python 定义了__str__()和__repr__()两种方法,__str__()用于显示给用户,而__repr__()用于显示给开发人员

    class Person(object):
    
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
    
    class Student(Person):
    
        def __init__(self, name, gender, score):
            super(Student, self).__init__(name, gender)
            self.score = score
    
        def __str__(self):
            return '(Student: {name}, {gender}, {score})'.format(name=self.name,gender=self.gender,score=self.score)
            __repr__ = __str__
    
    s = Student('Bob', 'male', 88)
    print s
    

    __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):
            return cmp(self.name,s.name) if s.score == self.score else cmp(s.score,self.score)
    
    L = [Student('Tim', 99), Student('Bob', 88), Student('Alice', 99)]
    print sorted(L)
    

    输出结果
    [(Alice: 99), (Tim: 99), (Bob: 88)]

    __len__

    斐波那契数列是由 0, 1, 1, 2, 3, 5, 8...构成。
    以下编写了一个Fib类,Fib(10)表示数列的前10个元素,print Fib(10) 可以打印出数列的前 10 个元素,len(Fib(10))可以正确返回数列的个数10。

    class Fib(object):
        def __init__(self, num):
            self.lst = []
            self.num = num
            a,b = 0,1
            for i in xrange(num):
                self.lst.append(a)
                a,b = b, a+b
        
        def __len__(self):
            return self.num
        
        def __str__(self):
            return str(self.lst)
    
    f = Fib(10)
    print f
    print len(f)
    

    相关文章

      网友评论

          本文标题:特殊函数

          本文链接:https://www.haomeiwen.com/subject/skuovftx.html