python中self.__class__.__name__方法的意思


在读一些源码的时候经常看到作者在类的定义中调用这个方法,到底是什么意思呢?

首先拆开来看,__class____name__是两个方法。


self.__class__

self.__class__可以获得一个对象所属的类(class)是什么,看线面的例子:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
​
​
peter = Person("Peter",35)
print(peter.__class__)

输出:

<class '__main__.Person'>

可以看到,peter所属的类是Person

实际上,等同于调用python内置的函数type():

print(type(peter))

<class '__main__.Person'>

self.__class__.__name__

__name__的作用则是在__class__的基础上只返回类名Person:

peter = Person("Peter",35)
print(peter.__class__.__name__)

输出

Person