|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
知识点:
一、self是什么?
Python中的self相当于c++的this指针
作用:同一个类可以生成很多个对象,当一个对象调用方法的时候,对象会将自身作为第一个参数,传给self参数。在接收到self参数后,Python就知道是哪一个对象在调用方法。
例:
- >>> class Ball():
- def setName(self,name):
- self.name = name
- def kick(self):
- print("我叫%s,该死的谁在踢我!" % self.name)
-
- >>> a = Ball()
- >>> a.setName("小明") #可以理解为 a.setName(a,"小明")
- >>> b = Ball()
- >>> b.setName("老明")
- >>> a.kick()
- 我叫小明,该死的谁在踢我!
- >>> b.kick()
- 我叫老明,该死的谁在踢我!
复制代码
二、Python中的魔法方法。
被双下划线包围的方法,如 __init__(self)。
__init__(self)方法又叫做构造方法。构造方法在对象被创建的时候被调用,默认为无参的。
例:
- class Ball:
- def __init__(self,name): #将构造方法__init__()中加入另一个参数,来代替setName方法
- self.name = name
- def kick(self):
- print("我叫%s,该死的谁踢我!" % self.name)
- a = Ball("小明") #在对象被创建的时候必须在括号内加入参数,否则会引发异常。
- a.kick()
复制代码
当然在定义构造方法的时候,也可以将新加入的参数定义为默认参数,这样可以避免报错。
三、公有和私有
Python中没有像C、java中用public和private这样的关键字来定义方法和属性是公有的还是私有的。
Python中的属性和方法默认上都是公有的,我们可以通过点操作符(.)来访问。
在Python中定义私有变量只需要在变量名或者函数名前面加上双下划线"__",那么这个函数或者变量就会成为私有的了。
例:
- >>> class Person:
- __name = "小明" #在这里将属性name定义为私有的。
- >>> p = Person()
- >>> p.name #此时在类外访问会报异常。
- Traceback (most recent call last):
- File "<pyshell#3>", line 1, in <module>
- p.name
- AttributeError: 'Person' object has no attribute 'name'
复制代码
当不用方法返回的方式也可以用(_类名__变量名)这种方式来访问私有的变量名。所有就目前来说Python的私有机制其实就是伪私有。Python的类是没有权限控制的。所以变量是可以外部调用的。
- >>> class Person:
- __name = "小明"
- >>> p = Person()
- >>> p._Person__name #其实就是将(__name = "小明")写为(p._Person__name )。
- '小明'
复制代码 |
评分
-
查看全部评分
|