Python在類中定義Decorator裝飾器

2021-07-30 04:05:28 字數 1651 閱讀 9022

所需相關包。

import logging

from functools import partial, wraps

logging.basicconfig(level=logging.debug)

類例項裝飾器

class

obj(object):

definstance_log_decorator

(self, func=none, level=logging.debug):

ifnot func:

return partial(self.instance_log_decorator, level=level)

def(*args, **kwargs):

log = logging.getlogger(func.__module__)

log.log(level, ('execute %s!' % func.__name__))

return func(*args, **kwargs)

需要先建立例項。

o = obj()

@o.instance_log_decorator

defplus

(x, y):

return x + y

類裝飾器

class

obj(object):

@classmethod

defcls_log_decorator

(cls, func=none, *, level=logging.warning):

ifnot func:

return partial(cls.cls_log_decorator, level=level)

def(*args, **kwargs):

log = logging.getlogger(func.__module__)

log.log(level, ('execute %s!' % func.__name__))

return func(*args, **kwargs)

cls_log_decorator作為obj的類方法直接使用。

@obj.cls_log_decorator(level=logging.info)

defminus

(x, y):

return x - y

@property

class

person

(object):

name = property()

@name.getter

defname

(self):

return self._name

@name.setter

defname

(self, value):

ifnot isinstance(value, str):

raise typeerror('excepted string')

self._name = value

各種不同的裝飾器方法會在關聯的property 例項上操作它的狀態。因此,任何時候只要你碰到需要在裝飾器中記錄或繫結資訊,那麼這不失為一種可行方法。 from 《python cookbook》9.8

Python中定義類方法

方法也分例項方法和類方法,與屬性類似 在class中定義的全部是例項方法,例項方法第乙個引數 self 是例項本身。在class中定義類方法,需要這麼寫 class person object count 0 classmethod def how many cls return cls.count...

Python中如何定義類?

類 class 和物件 object,也被稱為示例,instance 類是某一批物件的抽象,可以把類理解成某種概念 物件才是乙個具體的東西 定義類的語法 class類名 執行語句 零個到多個類變數 零個到多個方法 例項方法 類體中的執行語句,會在定義類時自動執行 如果類體中沒有任何 就是定義乙個空類...

python類呼叫方法 在Python類中呼叫方法

您尚未建立上述類的物件。類中的任何函式 方法都只能由該類的物件訪問。有關物件導向程式設計基礎的詳細資訊,請檢視this頁。同時,要使其生效,請按以下方式定義類 class time def init self,x none,y none,z none self.hour x self.minute ...