好久没有写简书了,今天有空和大家聊聊python中的私有化.
下面让我们上菜:
1. xx :公开属性
#在a.py中的代码
class Test(object):
def __init__(self):
#这是一个公开属性
self.num = 100
#在b.py可以访问
from a import *
test = Test()
print(test.num)
2. _xx :模块内可以访问的属性
这个的作用是该属性只能在当前模块中使用,出了模块及不能使用
#在a.py中的代码
class Test(object):
def __init__(self):
#这是一个模块属性
self._num = 100
#在a.py中可以访问
test = Test()
print(test._num)
#在b.py中访问不到_num属性
3. __xx :通常是类的私有属性
#在a.py中的代码
class Test(object):
def __init__(self):
#这是一个私有属性
self.__num = 100
#当前模块中Test类可以访问
那该怎么访问这个类的私有属性呢,看下面就明白了:
#在a.py中的代码
class Test(object):
def __init__(self):
self.__num = 100
def setNum(self, newNum):
self.__num = newNum
def getNum(self):
return self.__num
即像其他语言一样添加set,get方法
那又要问了,问为什么没有了__num
这个属性了呢,其实它还是有的,只不过python把它改成了_Test__num了,及_类名__属性名
,但不建议这样使用它.
顺便插句,方法也是这样使用的.
4. __xx-- :系统自带属性或方法
先说下,右面俩个--
应该和左边一样,可简书不让我这么敲上去,可能是和什么语法冲突了,这个的意思通常是系统自带的,就像上面的init方法.
5. xx_ : 用户和系统关键系重名,避免冲突
这个看到就更少了,没人闲的无聊用系统的关键字作为变量,但是你硬要这么干,可以用xx_.
test = Test()
test.if_ = 10
大概就讲这些,希望能帮到python的初学者,