Python---面向對象裝飾器

Class類:

創建一個類:class 類名:
構造方法:def init(self),self代表當前類的引用,類似於java中的this

class Student:
    def __init__(self, name, grade):  # self相當於java中的this 代表這個類自己
        self.name = name
        self.grade = grade

    def introduce(self):
        print("my name is "+self.name)
        print("my grade is "+self.grade)

guo=Student("guo","100")
guo.introduce()

裝飾器: @字符
在python語言中,一個函數的內部也可以定義一個函數,函數的參數類型也可以是一個一個函數
將一個函數作爲另一個函數的裝飾,思路:
模擬給一個汽車添加一個組件,在汽車類外部包裹一層組件類。

def compose(compose_fun):
    def addcompose():
        print("給這個汽車添加了一個" + compose_fun)

    return compose()
def car():
    try:
        component = input("請您輸入要給汽車添加的組件")
        return component
    except SystemError as error:
        print("Please input a String Value " + error)
compose(car())//用compose方法給汽車類添加裝飾

這裏只是練習一下錯誤類型,實際不論輸出什麼都不會報錯= =

在Python中可以使用@字符 爲方法指定添加什麼裝飾
將上述代碼修改後

def compose(compose_fun):
    def addCompose():
        print("給這個汽車添加了一個" + compose_fun())
    return addCompose()

@compose     #添加裝飾
def car():
    component=input("請您輸入要添加的組件")
    return "輪胎"
print(car())
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章