Skip to Content
Python文法詳解
book

Python文法詳解

by 石本 敦夫
September 2014
Intermediate to advanced
332 pages
6h 48m
Japanese
O'Reilly Japan, Inc.
Content preview from Python文法詳解
237
6.5 デコレータ
は、
def spam():
pass
spam = deco1(deco2(deco3(spam)))
と書いた場合と同じになります。
6.5.4
 
functools.wraps
デコレータ
デコレータで関数をラップすると、元の関数に記述したドキュメンテーション文字列やソース
ファイル上で指定した関数名など、元の関数にあった情報が欠落してしまいます。
functools.
wraps()
デコレータを使うと、元関数の情報でラッパ関数の情報を上書きできます。
import functools
def deco(func):
@functools.wraps(func) # func
の情報を、
wrapper
に設定する
def wrapper():
return func()
return wrapper
@deco
def spam():
""" This is spam function."""
pass
6.5.5
 クラスデコレータ
関数と同じように、クラス定義にもデコレータを指定できます。関数デコレータは関数を受け
取って関数を返す関数ですが、クラスデコレータは、クラスを受け取ってクラスを返す関数を使用
します。
クラスデコレータは、
class
文の直前に、
@
記号に続けてデコレータ関数を指定します。
def class_deco(cls):
cls.dish = 'SPAM'
return cls
@class_deco #
クラスデコレータ
class Ham:
dish = 'ham'
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Go言語によるWebアプリケーション開発

Go言語によるWebアプリケーション開発

Mat Ryer, 鵜飼 文敏, 牧野 聡
初めてのPHP

初めてのPHP

David Sklar, 桑村 潤, 廣川 類, 木下 哲也
データサイエンス講義

データサイエンス講義

Rachel Schutt, Cathy O'Neil, 瀬戸山 雅人, 石井 弓美子, 河内 崇, 河内 真理子, 古畠 敦, 木下 哲也, 竹田 正和, 佐藤 正士, 望月 啓充

Publisher Resources

ISBN: 9784873116884Other