1. 程式人生 > >Python基礎-訪問限制__變數名(private)

Python基礎-訪問限制__變數名(private)

私有-—__變數名稱

__變數名 等價於 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變數