• 类的特殊成员方法


    __len__:如果一个类对象表现的像一个列表能够获得自己有多少个元素那样(即调用len()函数),就得调用__len__()函数。

    class Student(object):
        def __init__(self, *args):
            self.names = args
        
        def __len__(self):
            return len(self.names)
    
    s = Student('Bob', 'Alice', 'Tim')
    print(len(s))     ---> 3

    __doc__:该方法将类的描述信息打印出来。注意:在调用的时候不加括号

    class Student(object):
        """这是一个学生类"""
        def __init__(self, *args):
            self.names = args
        
        def __len__(self):
            return len(self.names)
    
    s = Student('Bob', 'Alice', 'Tim')
    print(Student.__doc__)  ---> 这是一个学生类
    print(s.__doc__)        ---> 这是一个学生类

     __call__:该方法是对象后面加括号才会执行。在pytorch中,通过对象后面括号内加入待处理图像,就会执行forward函数,应该是覆盖了这个方法。

    class Fib():
        def __call__(self, *args, **kwargs):
            ret = [1,1]
            num = int(args[0])
            if num == 1:
                return [1,]
            else:
                while len(ret)< num:
                    ret.append(ret[-1]+ret[-2])
                return ret
    
    fib = Fib()
    print(fib(5))   ----->[1, 1, 2, 3, 5]

     __str__:如果想将一个类的对象转化为字符串,就需要这个特殊的方法。其实就是将对象转化为str类型时,会执行这个方法。当然默认情况下打印对象时也是执行这个方法。

    在pytorch中对对象打印时,出现的是其对应的网络框架,应该是对这个方法进行了重写。

    __repr__和__str__的区别只在于:__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)
        
    p = Person('alex', 'male')
    print(p)      ----->(Person: alex, male)
    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)
        __repr__ = __str__
  • 相关阅读:
    CodeForces 745C Hongcow Builds A Nation 并查集
    hdu 1542 Atlantis 矩形面积并
    CodeForces 741C Arpa’s overnight party and Mehrdad’s silent entering
    上海五校联赛 H 调和序列
    C++学习笔记之泛型算法
    hdu 6016 Count the Sheep
    操作系统 银行家算法
    计蒜之道复赛 B D F
    hdu 2966 In case of failure kdtree模板题
    poj 3468 A Simple Problem with Integers 降维线段树
  • 原文地址:https://www.cnblogs.com/czz0508/p/10456918.html
Copyright © 2020-2023  润新知