Python中私人方法和私人屬性

來源:互聯網
上載者:User

標籤:Python   私人方法   私人屬性   

1.私人方法和私人屬性
私人方法只能在類內部被調用,不能被對象使用
私人屬性只能在類內部使用,不能被對象使用

私人屬性只能在類內部使用,對象不能使用,但是,我們可以通過在類內部定義公有方法對私人屬性進行調用或修改,然後對象在調用這個公有方法使用。
###私人屬性和私人方法########
#在屬性名稱和方法名前面加上 __

class Person(object):    def __init__(self):        # 公有屬性        self.name = "李四"        #私人屬性        self.__age = 18    #定義公有方法    def show_info(self):        # 私人屬性只能在類內部使用,可以通過內部公有方法修改,        self.__age = 29        print(self.name, self.__age)#調用私人方法

#在類內部使用私人方法,可以通過內部公有方法調用
result = self.__show_address()
print( result)
#定義私人方法
def __show_address(self):
return "我的家在東北"

#定義對象,調用類

person = Person()person.show_info()

#測試對象調用私人屬性,結果報錯,對象不能使用私人屬性,私人屬性只能在內部使用
#print(person.name, person.age)
#測試對象調用私人方法,結果報錯,私人方法只能在類內部使用
#person.
show_address()
輸出:

李四 29
我的家在東北

===================================================================
擴充:私人屬性和私人方法,只是把名稱進行了偽裝,改成了其他名稱,導致我們訪問失敗,
如果我們拿到了偽裝後的名字,對象還是可以類外面調用私人方法和私人屬性

Notice::python中的私人沒有做到絕對私人(非常規方法)

#查看對象屬性
dict (可以使用對象或者類,查看對象或者類屬性)

通過print(person.dict)拿到對象person的屬性名稱

#查看對象屬性和方法
dir (可以查看對象或者類屬性和方法)

通過print(dir(person))查看到對象person的屬性和方法名稱

看到偽裝後的方法和屬性名稱,對象就可以調用

2.子類繼承父類,預設無法使用父類的私人方法和屬性

====================
擴充:
但是,如果我們拿到父類私人屬性和私人方法的名稱,子類也可以調用

3.私人屬性的修改

私人屬性只能在類內部進行修改
通過定義公有方法修改,讓後對象調用公有方法

=====================
擴充:
如果我們知道私人屬性偽裝後的名字,我們也可以通過偽裝後的名字去修改私人屬性,

我們在外面通過對象調用私人屬性名稱去修改的,不是真的修改,而是對對象添加了一個__開頭的屬性,並沒有做到修改私人屬性

總結:私人方法和私人屬性只能在類內部使用,私人屬性的修改也只能在類內部修改(非常規操作除外)

Python中私人方法和私人屬性

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.