(转载)python 类中 __call__与__init__

转载自:

https://blog.csdn.net/u011510825/article/details/79770303

请去查看原文。

最近看到项目中有人用了__call__,google了学习一下

__init__应该大家都知道,还是说一下,就是类的构造器,初始化一个类(创建一个类的实例)

class Student(object):
 
 
    def __init__(self, name):
        self.name = name

调用的时候是这样的

>>> a = Student('jack')
>>> a.name
'jack'

__call__的话,它的作用是可以让 一个类的实例像函数一样被调用,如 可以像函数一样调用上面的a(‘jack2’),相当于a.__call__(‘jack2’)

class Student(object):
    def __init__(self, name):
        self.name = name
    def __call__(self, name):
        self.name = name

现在演示一下

>>> a = Student('jack')
>>> a.name
'jack'
>>> a('jack2’)
>>> a.name
‘jack2'

那么__call__的作用是什么呢?
__call__ 在那些类的实例经常改变状态的时候会非常有效。调用这个实例是一种改变这个对象状态的直接和优雅的做法。用一个实例来表达最好不过了。
嗯,没错就是

1.为了让代码更优雅和直接

2.方便改变实例中的一些变量(大部分应该改变状态)

猜你喜欢

转载自blog.csdn.net/lijinshanba/article/details/83184169