Python基础入门学习笔记 037 类和对象:面向对象编程


self是什么?

  Python的self其实就相当于C++的this指针。由同一个类可以生产无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法,那么python就知道需要操作哪个对象的方法了。

1 >>> class Ball: 2 def setName(self,name): 3 self.name = name 4 def kick(self): 5 print('我叫%s,该死的,谁踢我。。。' % self.name) 6 7 8 >>> a = Ball() 9 10 >>> a.setName('球A') 11 >>> b = Ball() 12 13 >>> b.setName('球B') 14 15 >>> a.kick() 16 我叫球A,该死的,谁踢我。。。 17 >>> b.kick() 18 我叫球B,该死的,谁踢我。。。

你听说过Python的魔法方法吗?

  python的这些具有魔法的方法,总是被双下划线所包围,例如__init__(),即构造方法,也称构造函数,这个方法会在对象被创建时自动调用。其实,实例化对象时是可以传入参数的,这些参数会自动传入__init__()方法中,可以通过重写这个方法来自定义对象的初始化操作

实例:

1 >>> class Ball(): 2 def __init__(self,name): 3 self.name = name 4 def kick(self): 5 print('我叫%s,该死的,谁踢我。。。' % self.name) 6 7 8 >>> b = Ball('小土豆') 9 >>> b.kick() 10 我叫小土豆,该死的,谁踢我。。。

公有和私有?python内部采用了一种叫 name mangling(名字改编)的技术

默认上对象的属性和方法都是公开的,可以直接通过点操作符(.)进行访问:

1 >>> class Person: 2 name = '亦我飞也' 3 4 5 >>> p = Person() 6 >>> p.name 7 '亦我飞也'

为了实现定义私有变量,只需要在变量名或函数名前加上"__"两个下划线,那么这个函数或变量就会变成私有的了:

私有变量不可以直接由外部访问

1 >>> class Person: 2 __name = '亦我飞也' 3 4 5 >>> p = Person() 6 >>> p.__name 7 Traceback (most recent call last): 8 File "<pyshell#65>", line 1, in <module> 9 p.__name 10 AttributeError: 'Person' object has no attribute '__name'

室友变量可以由内部(内部函数)进行访问

1 >>> class Person: 2 __name = '亦我飞也' 3 def getName(self): 4 return self.__name 5 6 7 >>> p = Person() 8 >>> p.__name 9 Traceback (most recent call last): 10 File "<pyshell#72>", line 1, in <module> 11 p.__name 12 AttributeError: 'Person' object has no attribute '__name' 13 >>> p.getName() 14 '亦我飞也'

其实,name mangling(名字改编)技术,只是把双下划线开头的变量进行了改名而已。实际上在外部使用“_类名__变量名“即可访问双下划线开头的私有变量了:

1 >>> p._Person__name 2 '亦我飞也'


上一篇:Python基础入门学习笔记 019函数:我的地盘听我的

下一篇:Python基础入门学习笔记 028 文件:因为懂你,所以永恒


Python
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图