Skip to Content
Fluent Python ―Pythonicな思考とコーディング手法
book

Fluent Python ―Pythonicな思考とコーディング手法

by Luciano Ramalho, 豊沢 聡, 桑井 博之, 梶原 玲子
October 2017
Intermediate to advanced
832 pages
13h 34m
Japanese
O'Reilly Japan, Inc.
Content preview from Fluent Python ―Pythonicな思考とコーディング手法

9章Pythonicなオブジェクト

絶対に、2個のアンダースコアを先付けしないでください。うっとうしいことに、これはプライベート変数です。

——Ian Bickingpip、virtualenv、Paste、その他多数のプロジェクトのクリエータ「Paste Style Guide」より[09-01]

Pythonのデータモデルのおかげで、ユーザ定義型は組み込み型と同じくらい自然に動作します。オブジェクトに必要なメソッドをダックタイピングの精神で実装するだけで、継承を使わなくても、思ったとおりに動作します。

ここまで、いろいろな組み込みオブジェクトの構造と動作を説明してきました。では、本物のPythonオブジェクトとして動作するユーザ定義クラスを構築しましょう。

本章は1章が終わったところから、つまりいろいろな異なる型のPythonオブジェクトで一般的に見られる特殊メソッドの実装方法を示すところから始まります。

本章では、次の方法を説明します。

  • repr()bytes()など、オブジェクトを異なる表現で示す各種の組み込み関数を使えるようにする方法
  • 別バージョンのコンストラクタをクラスメソッドとして実装する方法
  • 組み込みメソッドのformat()str.format()メソッドが用いる書式指定ミニ言語の拡張方法
  • 読み取り専用属性へのアクセス
  • セットやdictのキーとして利用するためのハッシュ可能オブジェクト
  • __slots__によるメモリの節約

これらはすべて、簡単な2次元ユークリッドベクトル型を作成しながらやっていきます。

ベクトル型を徐々に発展させていく途中で、次の2つのテーマを議論します。

  • @classmethodおよび@staticmethodデコレータをいつ、どのように使用すべきか ...
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

Using Asyncio in Python

Using Asyncio in Python

Caleb Hattingh
Robust Python

Robust Python

Patrick Viafore

Publisher Resources

ISBN: 9784873118178Other