Python基礎-訪問限制__變數名(private)
阿新 • • 發佈:2019-02-19
私有-—__變數名稱
__變數名 等價於 private 變數名,即不允許直接別外部訪問和呼叫。一般通過set和get操作進行間接的訪問
示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"Person類"
class Person(object):
def __init__(self, name, age):
# __開頭,就變成了一個私有變數,等價於java的private
self.__name = name
self.__age = age
def setName (self, name):
self.__name = name
def getName(self):
return self.__name
def setAge(self, age):
self.__age = age
def getAge(self):
return self.__age
def toString(self):
print("%s:%s"%(self.__name, self.__age))
呼叫如下
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 訪問限制
from Person import *
def runTest():
mPerson = Person("小貓", "2")
mPerson.toString()
mPerson.setName("喵喵")
mPerson.setAge("2.5")
mPerson.toString()
runTest()
執行結果
D:\PythonProject>python main.py
小貓:2
喵喵:2.5
結語
約定俗成的規定
1. Python中,變數名類似xxx的,也就是以雙下劃線開頭,並且以雙下劃線結尾的,是特殊變數,特殊變數是可以直接訪問的
2. Python中,變數名類似__xxx是私有變數,不能直接訪問,需要通過set和get進行間接訪問
3. 有些時候,你會看到以一個下劃線開頭的例項變數名,比如_name,這樣的例項變數外部是可以訪問的,但是,按照約定俗成的規定,當你看到這樣的變數時,意思就是,“雖然我可以被訪問,但是,請把我視為私有變數,不要隨意訪問”。
Ps:雙下劃線開頭的例項變數是不是一定不能從外部訪問呢?其實也不是。不能直接訪問__name是因為Python直譯器對外把__name變數改成了_Person__name,所以,仍然可以通過_Person__name來訪問__name變數