1. 程式人生 > >Python中私有方法和私有屬性

Python中私有方法和私有屬性

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中私有方法和私有屬性