【 Effective Python, 2nd Edition 】独自のコンテナタイプ ( custom container types ) を定義するなら collections.abc クラスから派生させると手間無しです!

Tags: collections , sequence , python , effective

Published 2020年7月14日17:51 by T.Tsuyoshi

シーケンス ( sequences ) データを扱い、もしちょっとだけ独自の機能を追加したいのなら、組み込みのリストタイプ ( list ) から派生させたクラスを作っちゃえば簡単です。 通常のリストに、要素の出現頻度をカウントする機能を追加してみました。 class FrequencyList(list): def __init__(self, members):…

【 Effective Python, 2nd Edition 】Python においてクラス属性に厳密な private が無いのは何故? できる限り利用すべきではない理由とは? それでも private の使用が有効な状況とは?

Tags: attribute , python , effective

Published 2020年7月13日20:17 by T.Tsuyoshi

Python におけるクラス属性へのアクセスは基本 public ですが、属性名の前に __ ( _ を2つ) 付けることで private にすることができます。 class MyObject: def __init__(self): self.public_field = 5 self.__private_field = 10 …

【 Python + PostgreSQL 】with ステートメントとコネクションプール ( connection pool ) を活用して、効率的で安全なデータベースコネクション、カーソル ( cursor ) の供給、利用ができるようにしよう!(その2)

Tags: postgresql , rollback , simpleconnectionpool , python

Published 2020年7月10日21:08 by T.Tsuyoshi

前回(その1)の記事は こちら からどうぞ。 今回は前回の最後に提起した課題から取り組んでいきましょう。 class ConnectionPool: def __init__(self): self.connection_pool = pool.SimpleConnectionPool(minconn=1, …

【 Python + PostgreSQL 】with ステートメントとコネクションプール ( connection pool ) を活用して、効率的で安全なデータベースコネクション、カーソル ( cursor ) の供給、利用ができるようにしよう!(その1)

Tags: postgresql , connectionpool , psycopg2 , python

Published 2020年7月9日23:05 by T.Tsuyoshi

今回はちょっと趣向を変えてデータベースを扱います。 まずは前提です。 システムにはすでに PostgreSQL と psycopg2 がインストールされており Python プログラムから利用可能になっていて、Learning データベースには countries テーブルがあり以下のようなデータが入っています。 create table if not exists…

【 Effective Python, 2nd Edition 】@classmethod ポリモーフィズム ( polymorphism ) を利用して、複数の派生クラスをよりジェネリック ( generic ) に活用しよう!

Tags: polymorphism , generic , classmethod , python , effective

Published 2020年7月8日23:11 by T.Tsuyoshi

Python では、インスタンスに限らずクラスでもポリモーフィズム ( polymorphism ) を活用できます。 これはどういうことなんでしょうか? そして、どんなときに活用できるんでしょうか? Polymorphism は、クラス階層内におけるそれぞれの派生クラスが、同じインターフェースながら機能的には異なる独自のものを提供することを可能にします。 今回目指すのは …