零基础入门学习Python(17):对象(2)
在Python类中定义私有属性只需要在变量名或函数名前加上”__”两个下划线,那么这个属性或方法就成为私有的了。外部不能访问类中的私有属性,可以通过类的公有方法访问
>>> class Test:
__name = 'Jessica' #在外部将变量名隐藏,可以通过调用方法从内部获取私有变量
def getName(self):
print("The name is ",self.__name)
return self.__name
>>> test1 = Test()
>>> name1 = test1.getName()
The name is Jessica
>>> name1
'Jessica'
但是,在Python中,私有变量会被自动改成_类名__变量名
的形式,即就目前,Python的私有机制其实是伪私有,所以,Python的类是没有权限控制的,变量是可以被外部调用的
>>> test1._Test__name
'Jessica'
下面简单介绍一个魔法方法,魔法方法即能够在恰当的时候被自动调用的方法,被双下划线包围。
__init__(self,param1,param2,…)
实例化对象时可以传入参数,生成实例化对象时就存在了。
>>> class Test2:
def __init__(self,name):
self.name = name #Python中的self就相当于C++中的this
def getName(self):
print("My name is %s,I am playing... " % self.name)
>>> test2 = Test2('xiuxiu') #生成实例对象时把参数也传递进去
>>> test2.getName()
My name is xiuxiu,I am playing...