Python中使用裝飾器和元程式設計實現結構體類例項

2022-10-04 23:39:21 字數 1323 閱讀 1435

ruby中有乙個很方便的struct類,用來實現結構體。這樣就不用費力的去定義乙個完整的類來僅僅用作訪問屬性。

複製** **如下:

class dog < struct.new(:name, :agwww.cppcns.come)

endfred = dog.new("fred", 5)

printf "name:%s age:%d", fred.name, fred.age

##name:fred age:5

pyth中也可以這麼幹,但寫法很累贅。其中包含self.name = name 這種很煩人的寫法。

複製** **如下:

class dog(object):

def __init__(self, name, age):

self.name = name

self.age = age

fred = dog("fred", 5)

print('name: age:'.format(name=fred.name, age=fred.age))

##name:fred age:5

程式設計客棧想到我大python是無所不能的,有沒有一種簡化結構體類屬性定義的方法呢?答案肯定是有的。在補習了一些python黑魔法技術後,我想到利用裝飾器函式和元程式設計技術www.cppcns.com來實現。

複製** **如下:

def struct(*name):

""" 裝飾器函式

&nwww.cppcns.combsp;  用途:用於在類定義中,自動設定self.value = value

"""def decorator(func):

def wrapper(*args, **kw):

for i in range(len(name)):

setattr(args[0], name[i], args[i+1])

return func(*args, **kw)

return wrapper

return decorator

class dog(object):

@struct('name','age')   #黑魔法所在!

def __init__(self, *all_value):

pass

fred = dog("fred", 5)

print('name: age:'.format(name=fred.name, age=fred.age))

##name:fred age:5

要注意的是,這種寫法會造成**結構的不清晰。

本文標題: python中使用裝飾器和元程式設計實現結構體類例項

本文位址:

rn中使用裝飾器

裝飾器函式 裝飾器中執行的順序為從內到外,先執行檢視元件的建構函式 在從內到外執行裝飾器中的建構函式。如果 asd 是乙個方法,那麼需要閉包多巢狀一層函式 function asd params add function ccc wrap delete export 建立檢視 import reac...

在vue中使用裝飾器

在使用js寫vue專案時,我們也可以使用裝飾器來實現aop,如刪除確認,可以把它提取出來。import from element ui import vue from vue function confirmation target,name,descriptor return descriptor...

在 vue 中使用裝飾器

在 vue 中使用 ts 時,有一句常見的 import from vue property decorator vue property decorator 是 vue 中封裝裝飾器的外掛程式,其中有哪些裝飾器呢?裝飾器首字母大寫 component watch prop model emit 一...