欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中使用裝飾器和元編程實(shí)現(xiàn)結(jié)構(gòu)體類實(shí)例

 更新時(shí)間:2015年01月28日 16:12:03   投稿:junjie  
Python中使用裝飾器和元編程實(shí)現(xiàn)結(jié)構(gòu)體類實(shí)例,本文的方法算是一種Python的黑魔法技術(shù),并非Python的常規(guī)寫法,需要的朋友可以參考下

Ruby中有一個(gè)很方便的Struct類,用來實(shí)現(xiàn)結(jié)構(gòu)體。這樣就不用費(fèi)力的去定義一個(gè)完整的類來僅僅用作訪問屬性。

復(fù)制代碼 代碼如下:

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 這種很煩人的寫法。
復(fù)制代碼 代碼如下:

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是無所不能的,有沒有一種簡化結(jié)構(gòu)體類屬性定義的方法呢?答案肯定是有的。在補(bǔ)習(xí)了一些Python黑魔法技術(shù)后,我想到利用裝飾器函數(shù)和元編程技術(shù)來實(shí)現(xiàn)。
復(fù)制代碼 代碼如下:

def struct(*name):
    """ 裝飾器函數(shù)
        用途:用于在類定義中,自動(dòng)設(shè)置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


要注意的是,這種寫法會(huì)造成代碼結(jié)構(gòu)的不清晰。

相關(guān)文章

  • 分割python多空格字符串的兩種方法小結(jié)

    分割python多空格字符串的兩種方法小結(jié)

    這篇文章主要介紹了分割python多空格字符串的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Scrapy框架基本命令與settings.py設(shè)置

    Scrapy框架基本命令與settings.py設(shè)置

    這篇文章主要介紹了Scrapy框架基本命令與settings.py設(shè)置,結(jié)合實(shí)例形式分析了創(chuàng)建爬蟲項(xiàng)目、創(chuàng)建爬蟲文件、存儲(chǔ)、打開網(wǎng)頁及settings.py設(shè)置等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事項(xiàng)

    Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事項(xiàng)

    這篇文章主要介紹了Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事項(xiàng),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • Python實(shí)現(xiàn)新型冠狀病毒傳播模型及預(yù)測代碼實(shí)例

    Python實(shí)現(xiàn)新型冠狀病毒傳播模型及預(yù)測代碼實(shí)例

    在本篇文章里小編給大家整理的是關(guān)于Python實(shí)現(xiàn)新型冠狀病毒傳播模型及預(yù)測代碼內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • Python Queue模塊詳細(xì)介紹及實(shí)例

    Python Queue模塊詳細(xì)介紹及實(shí)例

    這篇文章主要介紹了Python Queue模塊詳細(xì)介紹及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • python對(duì)于requests的封裝方法詳解

    python對(duì)于requests的封裝方法詳解

    今天小編就為大家分享一篇python對(duì)于requests的封裝方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python 如何獲取元素在array中的下標(biāo)

    python 如何獲取元素在array中的下標(biāo)

    這篇文章主要介紹了python 獲取元素在array中的下標(biāo)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python 爬蟲一鍵爬取 淘寶天貓寶貝頁面主圖顏色圖和詳情圖的教程

    python 爬蟲一鍵爬取 淘寶天貓寶貝頁面主圖顏色圖和詳情圖的教程

    今天小編就為大家分享一篇python 爬蟲一鍵爬取 淘寶天貓寶貝頁面主圖顏色圖和詳情圖的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python中SQLite數(shù)據(jù)庫的使用

    Python中SQLite數(shù)據(jù)庫的使用

    SQLite是一種輕型關(guān)系型數(shù)據(jù)庫,常用于嵌入式設(shè)備和移動(dòng)應(yīng)用中。Python中內(nèi)置了SQLite模塊,可用于連接和操作SQLite數(shù)據(jù)庫。通過Python SQLite模塊,可以方便地創(chuàng)建、查詢和修改數(shù)據(jù)庫中的數(shù)據(jù),支持事務(wù)處理和數(shù)據(jù)庫操作的原子性保證
    2023-04-04
  • 去除python中的字符串空格的簡單方法

    去除python中的字符串空格的簡單方法

    在本篇文章里小編給大家整理了一篇關(guān)于去除python中的字符串空格的簡單方法,有興趣的朋友們可以學(xué)習(xí)下。
    2020-12-12

最新評(píng)論