python裝飾器的使用

2021-09-25 14:54:12 字數 1517 閱讀 3906

在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...