クラス

参考:

クラス | Python 3.x ドキュメント [公式]

使い方

参考:

クラス | とほほの WWW 入門

導入

参考:

クラスの基本 | Python 学習講座

概要

参考:

Python のオブジェクト指向プログラミングを完全理解 – Qiita

Python のクラスを理解、オブジェクト指向プログラミングの基本を押さえる | 日経クロステック

継承

参考:

クラス継承 (super) – Qiita

Python のクラス (class) の継承に関する知識と方法のまとめ | HEADBOOST

クラスの継承についてやさしく解説 | CodeCampus

初期化

子クラスを初期化する例

class SubClass(SuperClass):
    def __init__(self, value, **kw)
        super().__init__(**kw)
        self.var = value

子クラスで __init__ を定義しなかった場合は、親クラスの __init__ がそのまま呼ばれる。子クラスで __init__ を定義した場合は、親クラスの __init__ を明示的に呼び出す必要がある。

参考:

python で継承と super() を使って派生クラスを init してみよう – Qiita

How do I initialize the base (super) class? – Stack Overflow

What happens if define a class without __init__ method? – Stack Overflow

python multiple inheritance passing arguments to constructors using super – Stack Overflow

Introspecting arguments from the constructor function __init__ in Python – Stack Overflow

Implicitly invoking parent class initializer – Stack Overflow

Understanding Python super() with __init__() methods – Stack Overflow

コンストラクタのオーバーロード

参考:

python で複数のコンストラクタを定義したい – Qiita

How to overload __init__ method based on argument type? – Stack Overflow

変数のスコープ

  • インスタンス変数
  • クラス変数

参考:

Python のクラスメンバのスコープまとめ – Qiita

Python のクラス変数とインスタンス変数 | UX MILK

Python のメンバー変数 – teratail

accessing super class variable in child class – Stack Overflow

super

参考:

親クラスのメソッド呼び出し | Python-izm

プロパティ

  • @property
  • @xxx.setter

参考:

Python のプロパティ宣言 – Qiita

プロパティについて理解したのでまとめる | nametake-blog

Python の @property によるプロパティへのアクセス制御のまとめ | HEADBOOST

クラスでプロパティを使う | TIL

プロパティ | Python 学習講座

プロパティ | ゼロから学ぶ Python

Python でインスタンス変数の入力値をバリデーションする方法 | DevelopersIO

Python にはプロパティの getter、setter は不要、それがパイソニック | のーずいだんぷ

プロパティをまとめて設定する

参考:

Setting multiple object attributes at once – Stack Overflow

short syntax for accessing multiple properties – Stack Overflow

クラス変数

参考:

ClassVar – typing | Python 3.x ドキュメント [公式]

PEP 526 – Syntax for Variable Annotations | Python.org [Official]

how to extract type from class property? (runtime type annotation check) – Stack Overflow

How to get class variables and type hints? – Stack Overflow

多重継承

参考:

How does Python’s super() work with multiple inheritance? – Stack Overflow

Calling parent class __init__ with multiple inheritance, what’s the right way? – Stack Overflow

判別する

  • isclass
  • isinstance
  • type
  • issubclass

参考:

Python で型を取得・判定する type 関数, isinstance 関数 | note.nkmk.me

class かどうかを判定 | くりーむわーかー

isinstance

オブジェクトが指定したクラスのインスタンスかどうか判定する。

class Derived(Base):
    pass

obj = Derived()

if isinstance(obj, Base):
    print("Yay!")

参考:

isinstance 関数の使い方/オブジェクトのデータ型を判定する | Let’s プログラミング

isinstance | Python 3.x ドキュメント [公式]

クラスメソッド (@classmethod)

参考:

Python のクラスメソッドの定義の仕方と staticmethod との違い | St_Hakky’s blog

メンバアクセス

クラス内でメンバにアクセスする場合は self. を付ける。

class Test(Base):
    # ...
    def do_something():
        self.prop_name = self.method_name(123)

参考:

Pythonでのクラス内のメソッドを別のメソッド内で使う方法 – teratail

メンバの一覧を取得する

  • __dict__
  • dir()

参考:

__dict__で少し遊ぶ | ねこゆきのメモ

Python の dir() 関数 | Python 入門

dir – モジュールの属性取得 | Python-izm

クラスのプロパティ情報取得 | ajisaba.net

dir | Python 3.x ドキュメント [公式]

object.__dict__ | Python 3.x ドキュメント [公式]

what’s the biggest difference between dir and __dict__ in python – Stack Overflow

Explain __dict__ attribute – Stack Overflow

What is the __dict__.__dict__ attribute of a Python class? – Stack Overflow

プロパティを安全に取得する

参考:

getattr – Qiita

getattr() はオブジェクトの属性の値を返す | コムテブログ

Python の getattr 関数で属性を取得する | 小さなことをやってみるブログ

getattr | Python 3.x ドキュメント [公式]

親クラスの一覧を取得する (__mro__)

参考:

Python でサブクラス・スーパークラスを確認/issubclass(), __mro__ など | note.nkmk.me

Getting all superclasses in Python 3 – Stack Overflow

メソッドとは/関数とメソッドの違い

  • 関数引数を取り、戻り値を返す。
  • メソッドクラス内に定義された関数でオブジェクトのインスタンスに対して実行される。

参考:

関数とメソッドの違いとは (Python でわかりやすく説明) | ガンマソフト株式会社

関数とメソッドの違い – Qiita

プライベートメンバ

参考:

Python のクラスメンバのスコープまとめ – Qiita

クラス内からしか呼び出さないメソッドを明示する方法はないでしょうか? – スタック・オーバーフロー

__new__

参考:

Python の __new__ ってなに? | 民主主義に乾杯

__new__ と __init__ とメタクラスと – Qiita

__new__ と __init__ の違いについて/具体例と解説 | babaye’s notes

Python のクラスコンストラクター/__new__ と __init__ | システムトラスト技術ブログ

__new__ がわからん | ゆくゆくは有へと

__new__ の第一引数について – teratail

patching __new__ method – Stack Overflow

error when running __new__? not invoking __init__ – Stack Overflow

__props__ / __init_subclass__

参考:

Accessing super (parent) class variable in python – Stack Overflow

metaclasses

参考:

What are metaclasses in Python? – Stack Overflow

object

参考:

クラス継承で object クラスを継承する理由 – teratail

Why do Python classes inherit object? – Stack Overflow

How can I create an object and add attributes to it? – Stack Overflow

キャストしたい

参考:

Python でクラスキャスト | 民主主義に乾杯

Tips

参考:

Python での関数とクラスの呼び出し/関数の引数を関数にすることの有用性やクラスの継承など – Qiita

まとめ

参考:

チートシート クラス定義編 | @IT

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA