• <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

            国产成人精品久久| 91精品国产综合久久香蕉 | 精品熟女少妇a∨免费久久| 日韩精品久久无码中文字幕| 久久精品aⅴ无码中文字字幕重口| 99久久精品免费看国产免费| 中文字幕无码久久久| 久久天堂电影网| 久久99久久99精品免视看动漫| 久久久青草久久久青草| 久久久久亚洲av综合波多野结衣| 夜夜亚洲天天久久| 无码精品久久久久久人妻中字| 狠狠久久综合| 久久久国产精品福利免费 | 99久久综合狠狠综合久久止| AA级片免费看视频久久| 囯产精品久久久久久久久蜜桃| 精品久久久久久无码人妻热 | 午夜视频久久久久一区 | 久久精品亚洲一区二区三区浴池| 久久国产视屏| 国产精品美女久久久久AV福利| 蜜臀av性久久久久蜜臀aⅴ| 无码乱码观看精品久久| 久久精品综合一区二区三区| 中文字幕亚洲综合久久2| 国产日产久久高清欧美一区| 国产偷久久久精品专区| 久久成人小视频| 久久综合视频网| 亚洲欧美久久久久9999| 国内精品久久久久久久涩爱| 国产精品免费久久久久影院 | 欧美亚洲国产精品久久| 一本久久精品一区二区| 日产精品久久久久久久| 2020久久精品亚洲热综合一本| 久久天天躁狠狠躁夜夜avapp| 久久精品日日躁夜夜躁欧美| 亚洲av伊人久久综合密臀性色|