如何理解python中的self

Posted by Tesla9527 on May 11, 2018

脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Robot():

    def work(self):
        print('self对象: %s' % self)
        print('self对象的类型: %s' % type(self))
        print('self对象在内存中的地址: %s' % id(self))


robot_timi = Robot()
robot_timi.work()
print('------------------------')
print('robot_timi实例对象: %s' % robot_timi)
print('robot_timi实例对象的类型: %s' % type(robot_timi))
print('robot_timi实例对象在内存中的地址: %s' % id(robot_timi))
print('------------------------')

robot_wubai = Robot()
robot_wubai.work()
print('------------------------')
print('robot_wubai实例对象: %s' % robot_wubai)
print('robot_wubai实例对象的类型: %s' % type(robot_wubai))
print('robot_wubai实例对象在内存中的地址: %s' % id(robot_wubai))

输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
self对象: <__main__.Robot object at 0x05407450>
self对象的类型: <class '__main__.Robot'>
self对象在内存中的地址: 88110160
------------------------
robot_timi实例对象: <__main__.Robot object at 0x05407450>
robot_timi实例对象的类型: <class '__main__.Robot'>
robot_timi实例对象在内存中的地址: 88110160
------------------------
self对象: <__main__.Robot object at 0x058D42F0>
self对象的类型: <class '__main__.Robot'>
self对象在内存中的地址: 93143792
------------------------
robot_wubai实例对象: <__main__.Robot object at 0x058D42F0>
robot_wubai实例对象的类型: <class '__main__.Robot'>
robot_wubai实例对象在内存中的地址: 93143792

通过输出,我们可以看到self的内存地址和实例对象的内存地址是一样的,所以self代表的是实例对象。