• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 41, 文章 - 8, 評(píng)論 - 8, 引用 - 0
            數(shù)據(jù)加載中……

            [導(dǎo)入][python]使用metaclass自動(dòng)生成set/get方法

            在python cookbook的Chapter 20的 Introduction中,有關(guān)于metaclass(元類(lèi))的簡(jiǎn)單介紹,它自動(dòng)生成了以一個(gè)下劃線(xiàn)帶頭的get方法。

            我改進(jìn)了一下,使其也具有set方法,當(dāng)然就是增加了幾行代碼。

            IDLE 2.6.5     
            >>> class M(type):
                def __new__(cls, name, bases, classdict):
                    for attr in classdict.get('__slots__', ( )):
                        if attr.startswith('_'):
                            def getter(self, attr=attr):
                                return getattr(self, attr)
                            def setter(self, val=0, attr=attr):
                                return setattr(self, attr, val)
                            classdict['get' + attr[1:]] = getter
                            classdict['set' + attr[1:]] = setter
                    return type.__new__(cls, name, bases, classdict)

            >>> class Point(object):
                __metaclass__ = M
                __slots__ = ['_x', '_y' ,'_z']

            >>> p=Point()
            >>> dir(p)
            ['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__metaclass__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '_x', '_y', '_z', 'getx', 'gety', 'getz', 'setx', 'sety', 'setz']
            >>> p.setx(10)
            >>> p.getx()
            10
            >>>

            可以看到,Point __slot__ 中放入x,y,z三個(gè)名字,然后就自動(dòng)生成類(lèi)似getx,setx的方法。

            metaclass 真是強(qiáng)大啊。

            閱讀全文
            類(lèi)別:Python 查看評(píng)論
            文章來(lái)源:http://hi.baidu.com/mirguest/blog/item/a33c7d5314d7ca0b377abe68.html

            posted on 2011-02-02 12:01 mirguest 閱讀(1912) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): python

            久久精品视屏| 亚洲欧美精品一区久久中文字幕| 亚洲中文字幕伊人久久无码| 伊人久久久AV老熟妇色| 久久国产精品99久久久久久老狼 | 香蕉久久夜色精品国产小说| 久久国产精品偷99| 天堂久久天堂AV色综合| 国产亚洲色婷婷久久99精品91| 精品熟女少妇AV免费久久| 亚洲精品乱码久久久久久蜜桃不卡 | 激情综合色综合久久综合| 精品国产青草久久久久福利| 亚洲国产精久久久久久久| 久久综合亚洲色一区二区三区| 伊人久久大香线蕉精品| 亚洲精品乱码久久久久久久久久久久 | 99久久综合国产精品二区| 99精品国产综合久久久久五月天| 色综合久久综精品| 久久亚洲日韩精品一区二区三区| 三级韩国一区久久二区综合| 蜜桃麻豆www久久| 精品久久久噜噜噜久久久| 久久99精品久久久大学生| 色综合久久久久综合99| 狠狠色丁香婷婷综合久久来来去| 国产精品久久久久影视不卡| 少妇精品久久久一区二区三区 | av无码久久久久不卡免费网站| 亚洲а∨天堂久久精品| 久久国产福利免费| 久久亚洲国产精品123区| 精品久久久久久无码人妻热| 国产精品岛国久久久久| 国产精品一久久香蕉国产线看| 97久久婷婷五月综合色d啪蜜芽| 久久91精品国产91| 亚洲AV无码1区2区久久| 新狼窝色AV性久久久久久| 久久国产亚洲精品无码|