在class內部,可以有屬性和方法,而外部**可以通過直接呼叫例項變數的方法來運算元據,這樣,就隱藏了內部的複雜邏輯。
但是,從前面student類的定義來看,外部**還是可以自由地修改乙個例項的name、score屬性
如果要讓內部屬性不被外部訪問,可以把屬性的名稱前加上兩個下劃線__,在python中,例項的變數名如果以__開頭,就變成了乙個私有變數(private),只有內部可以訪問,外部不能訪問,所以,我們把student類改一改
在修改後不能直接用lisa.name去訪問name了,而需要使用lisa._name,同樣也可以通過lisa._name對name進行修改
class student(object):
def __init__(self,name,score):
self._name = name
self._score = score
def get_name(self):
return self._name
def get_score(self):
return self._score
def set_score(self,score):
self._score = score
def print_score(self):
if self._score >= 90:
print self._name,'his score is ',self._score,'his grade is a'
elif self._score >= 60:
print self._name,'his score is ',self._score,'his grade is b'
else:
print self._name,'his score is ',self._score,'his grade is c'
def print_name(self):
print self._name
def main():
lisa = student('lisa',99)
bart = student('bart',80)
lisa.print_name()
lisa._name = 'jhon'
lisa.print_name()
lisa._score = 100
bart._score = 90
lisa.print_score()
bart.print_score()
lisa._name = 'jhon'
lisa._score = 99
bart._score = 80
lisa.print_score()
bart.print_score()
if __name__ == '__main__':
main()
執行結果:
python 裝飾器的使用
使用裝飾器將函式作為引數,最後再返回乙個引數,簡單來說就是在不修改原函式的 上對原函式新增新的功能。1 在原函式中新增乙個裝飾器 原函式 def sayhello print hello,world sayhello 新增裝飾器後 import functools def decorator fun...
Python裝飾器的使用
本文介紹的是python裝飾器 的使用,分三部分記錄裝飾器,旨在為之後複習保留學習筆記。python裝飾器在沒有改變原始函式呼叫方式的同時,在原始函式的前後增加功能,滿足開放封閉原則。目錄 1.裝飾器的固定模板 2.帶引數的裝飾器模板 3.多個裝飾器函式裝飾乙個函式 裝飾器的固定模板 def inn...
python裝飾器的使用
它可以使我們的 看起來更簡潔,可以修改部分函式功能,讓你的 看起來很 高階 當然,它也可能會造成 的閱讀性變差,所以在使用裝飾器的時候,你需要做乙個取捨。首先來看一段 def param func return hi,im a function def decoration function pri...