Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@mine820

C/C++プログラマがPythonにチャレンジしてみる(クラス編)

More than 3 years have passed since last update.

こちらで基本的なところは抑えましたので(たぶんw)、次のステップとしてクラスに取り組んでみたいと思います。

※参考書の「6章」になります
※やはり、あまり重要そうではなさそうなところは飛ばしていきます

基本

  • 宣言は「class Hoge:」
  • 継承は「class Hoge(Base1, Base2):」
  • メソッドは関数と同じ「def func(self, ...):」
    • とにかくメソッドの最初の引数は「self」
  • コンストラクタは「def __init__(self, ...):」
  • クラス変数も定義できる(Java的な書き方で)
    • 他にも「__init__()」内で設定すれば、想定の動作になる
    • オブジェクトに、どんどん変数を追加できる(宣言しないのは、なんか違和感w)
    • 変数に値を設定しないと、その変数は存在しないのと同じ

Tips

  • プライベート関数(変数)は「_func()」と、前にアンダースコアを付け、後ろはアンダースコアを無しにする
  • staticメソッドは「@staticmethod」で定義
    • 第1引数に「self」はいらない

その他

もっといろいろ機能はあるようだが、とりあえず覚えなくても何とかなりそう。
必要になったらちゃんと見ます。

メソッド名 意味
__init__ コンストラクタ
__del__ デストラクタ
__new__ インスタンスアロケータ
__repr__ オブジェクトの情報を表す文字列を返す
__str__ オブジェクトを文字列に変換して返す
__bytes__ オブジェクトをbytes型に変換して返す
__format__ オブジェクトを書式に従った文字列にして返す
__hash__ オブジェクトのハッシュ値を返す
__bool__ ブール演算時に呼び出される
__lt__ 「<」演算に対応
__le__ 「<=」演算に対応
__eq__ 「==」演算に対応
__ne__ 「!=」演算に対応
__gt__ 「>」演算に対応
__ge__ 「>=」演算に対応
__getattr__ オブジェクトに設定されていない属性値を読み出すときに呼び出される(登録されているとき以外)
__getattribute__ オブジェクトに設定されていない属性値を読み出すときに呼び出される(常に)
__setattr__ オブジェクトの属性値を設定するときに呼び出される
__delattr__ オブジェクトの属性値を削除するときに呼び出される
__dir__ メンバの一覧のシーケンスを返す
__index__ 整数の値を返す
__add__ 「+」演算子(左項)に対応
__sub__ 「-」演算子(左項)に対応
__mul__ 「*」演算子(左項)に対応
__truediv__ 「/」演算子(左項)に対応
__floordiv__ 「//」演算子(左項)に対応
__mod__ 「%」演算子(左項)に対応
__divmod__ 「divmod()」演算子(左項)に対応
__pow__ 「**」演算子(左項)に対応
__lshift__ 「<<」演算子(左項)に対応
__rshift__ 「>>」演算子(左項)に対応
__and__ 「&」演算子(左項)に対応
__xor__ 「^」演算子(左項)に対応
__or__ 「|」演算子(左項)に対応
__radd__ 「+」演算子(右項)に対応
__rsub__ 「-」演算子(右項)に対応
__rmul__ 「*」演算子(右項)に対応
__rtruediv__ 「/」演算子(右項)に対応
__rfloordiv__ 「//」演算子(右項)に対応
__rmod__ 「%」演算子(右項)に対応
__rdivmod__ 「divmod()」演算子(右項)に対応
__rpow__ 「**」演算子(右項)に対応
__rlshift__ 「<<」演算子(右項)に対応
__rrshift__ 「>>」演算子(右項)に対応
__rand__ 「&」演算子(右項)に対応
__rxor__ 「^」演算子(右項)に対応
__ror__ 「|」演算子(右項)に対応
__iadd__ 「+=」累積代入文に対応
__isub__ 「-=」累積代入文に対応
__imul__ 「*=」累積代入文に対応
__itruediv__ 「/=」累積代入文に対応
__ifloordiv__ 「//=」累積代入文に対応
__imod__ 「%=」累積代入文に対応
__ipow__ 「**=」累積代入文に対応
__ilshift__ 「<<=」累積代入文に対応
__irshift__ 「>>=」累積代入文に対応
__iand__ 「&=」累積代入文に対応
__ixor__ 「^=」累積代入文に対応
__ior__ 「|=」累積代入文に対応
__neg__ 「-」単項演算子に対応
__pos__ 「+」単項演算子に対応
__abs__ 「abs()」単項演算子に対応
__invert__ 「^」単項演算子に対応
__complex__ complex()に対応
__int__ int()に対応
__float__ float()に対応
__round__ round()に対応
__instancecheck__ クラスがサブクラスかサブクラスのインスタンスか仮想サブクラスのインスタンスか
__subclasscheck__ クラスがサブクラスか仮想サブクラスか
__call__ 「()」関数呼び出し演算子に対応
__len__ len()に対応
__getitem__ object[key]での取得に対応
__setitem__ object[key]にの設定に対応
__delitem__ del object[key]に対応
__iter__ イテレータの取得
__reversed__ reversed()に対応
__contains__ 「item in object」での取得に対応
__get__ ディスクリプタで属性値を取得
__set__ ディスクリプタで属性値を設定
__delete__ ディスクリプタで属性値を削除
__enter__ コンテキストマネージャでwith文で呼び出される
__exit__ コンテキストマネージャで実行コンテキスト終了時に呼び出される

※こんなの、覚えられるかっていうの(苦笑)

9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
mine820
もうプログラムを書かなくなって久しい、元アプリケーションエンジニアのおじさんです。 C言語万能教に侵されています。 OpenGLとOpenCVとDirectShowでメシ食ってました。 たまには趣味で書いていこうかと思っています。 ※発信の内容は全て個人の見解に基づくもので、所属する組織の見解ではありません
ark-info-sys
最新IT技術を利用したソフト開発、パッケージ製品の企画開発を中心に、お客様に満足いただけるサービスをご提供いたします。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?