马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 )。
'小明'
|