国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中用Descriptor實現類級屬性(Property)詳解

2020-02-23 05:48:05
字體:
來源:轉載
供稿:網友

上篇文章簡單介紹了python中描述器(Descriptor)的概念和使用,有心的同學估計已經Get√了該技能。本篇文章通過一個Descriptor的使用場景再次給出一個案例,讓不了解情況的同學可以更容易理解。

先說說decorator

這兩個單詞確實是有些相似,同時在使用中也是形影不離。這也給人造成了理解上的困難,說裝飾器和描述器到底是怎么回事,為什么非得用一個@符號再加上描述器才行。

很多文章也都把這倆結合著講,我自己看完之后都會覺得很繞。其實學習一個知識點,和做項目開發一個功能是一樣的。在功能拆分的時候我們都會盡量的把任務拆分的足夠小,然后才分配到開發者頭上。這樣保證各個任務的獨立性,完整性,并且易于做進度管理。在任務開發的時候也不能把你的任務都放到一個函數/接口中去做,以避免各功能間產生高耦合的狀況,導致后期難以維護。

再說回到學習一個技術點,如果你總是嘗試一下子就要掌握兩個或多個技術點,結果可能是忙活了半天,發現還是暈頭轉向。

擦,好像扯遠了。

說Descriptor是Descriptor, Decorator是Decorator,遇到不懂的地方,各個擊破,哪里不懂點哪里。所以先說Decorator, 關鍵點是你要意識到這就是一個語法糖 。所謂語法糖就是讓你可以用簡單的方式寫代碼。本質上裝飾器(Decorator)就是這樣:
代碼如下:
def decorator(func):
    def wrapper():
        print 'in decorator'
        func()
    return wrapper

def func():
    print 'in func'

# 把func裝飾一下
func = decorator(func)  # 左邊的func其實是那個wrapper, 你執行它的時候會,它會幫你執行func()
# 等同于你在定義func的時候加上@
@decorator
def func():
    print 'in func'

正題:通過Descriptor來做一個類級的Property

常見的Property是這樣的:
代碼如下:
class Foo(object):
    _name = 'the5fire'

    @property
    def name(self):
        return self._name

這中property的使用,是實例級的應用。因為只有在 foo = Foo() 之后,才可以 foo.name 。

但是如果我需要一個類級的屬性應該怎么做呢,就像是 classmethod一樣,不需要實例化類我就可以調用。對應的需求是這樣的,定義了一個基類DBManage:
代碼如下:
class DBManage(object):
    @classmethod
    def table_name(cls):
        return cls.__name__.lower()

    @classmethod

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临西县| 唐海县| 侯马市| 越西县| 惠安县| 平远县| 鄱阳县| 肇东市| 自贡市| 将乐县| 大邑县| 阿克陶县| 天水市| 土默特右旗| 卓尼县| 印江| 南平市| 鹤山市| 登封市| 陆河县| 溧水县| 临武县| 棋牌| 安多县| 深水埗区| 安丘市| 鄱阳县| 鲁山县| 通州市| 丹棱县| 平定县| 岳普湖县| 得荣县| 福贡县| 兴和县| 宁津县| 都江堰市| 贵南县| 襄樊市| 杂多县| 中卫市|