Python中實現結構體類
Ruby中有一個很方便的Struct類,用來實現結構體。這樣就不用費力的去定義一個完整的類來僅僅用作訪問屬性。
class Dog < Struct.new(:name, :age)
end
fred = Dog.new("fred", 5)
printf "name:%s age:%d", fred.name, fred.age
##name:fred age:5
Python3.4中也可以這麼幹,但寫法很累贅。其中包含self.name = name
這種很煩人的寫法。
class Dog(object):
def __init__(self, name, age):
self.name = name
self.age = age
fred = Dog("fred", 5)
print('name:{name} age:{age}'.format(name=fred.name, age=fred.age))
##name:fred age:5
想到我大Python是無所不能的,有沒有一種簡化結構體類屬性定義的方法呢?答案肯定是有的。在補習了一些Python黑魔法技術後,我想到利用裝飾器函式和超程式設計技術來實現。
def struct(*name):
""" 裝飾器函式
用途:用於在類定義中,自動設定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:{name} age:{age}'.format(name=fred.name, age=fred.age))
##name:fred age:5
要注意的是,這種寫法會造成程式碼結構的不清晰。
相關文章
- 類與結構體結構體
- Swift 類與結構體Swift結構體
- golang類和結構體Golang結構體
- Python在類中實現swith case功能Python
- 資料結構-雙向連結串列(Python實現)資料結構Python
- Swift-類和結構體Swift結構體
- Partial類、列舉、結構體結構體
- 資料結構-哈夫曼樹(python實現)資料結構Python
- 資料結構-迴圈佇列(Python實現)資料結構佇列Python
- python 介面實現類的Python
- Leetcode LRU快取,陣列+結構體實現LeetCode快取陣列結構體
- C均值聚類 C實現 Python實現聚類Python
- 資料結構:線性表(Python實現基本操作)資料結構Python
- [資料結構]連結串列的實現在PHP中資料結構PHP
- [資料結構] 連結串列的實現在 PHP 中資料結構PHP
- “c語言+結構體+連結串列”實現名片系統C語言結構體
- 譜聚類的python實現聚類Python
- javascript實現Map結構JavaScript
- 類中的結構體或列舉等型別的前置宣告結構體型別
- 資料結構初階--單連結串列(講解+類别範本實現)資料結構
- java關於繼承父類,需要實現父類中的構造方法Java繼承構造方法
- springboot結合Redis實現工具類Spring BootRedis
- Python的類及單例實現Python單例
- python類例項化如何實現Python
- GO 實現一個把結構體做 Sign 簽名Go結構體
- Java實現資料結構之線性結構Java資料結構
- sqlsugar 實現實體類中欄位是字串陣列情況SqlSugar字串陣列
- Runtime中的 isa 結構體結構體
- [C#.NET 拾遺補漏]14:使用結構體實現共用體C#結構體
- Stata實現結構方程模型模型
- 樹結構與Java實現Java
- Python中資料結構與特性Python資料結構
- python中的scikit-learn庫來實現SVM分類器。Python
- 類檔案結構_class類檔案的的結構
- 層級聚類和Python實現的初學者指南(附連結)聚類Python
- Python實現單連結串列Python
- C#中誰最快:結構還是類?
- Python中如何使用構造方法定義類Python構造方法
- iOS Swift結構體與類的方法排程iOSSwift結構體