2018年12月19日水曜日

Pythonの__enter__、__exit__、__call__などのアンダースコア2つの使い方

アンダースコア2つのものはクラス属性を表しています。

基本的なことかもしれませんが、知らなかったので

__enter__、__exit__はwithに入ったとき、抜けるときに自動的にやることを記述できる



__call__は関数やクラスが呼び出されたときに自動でやることを記述できる


class A:
    def __init__(self):
        pass
    def __call__(self, a):
        print("A called")

とすると。

A(a)

とするとコールされたので

A called

とプリントされます。


__future__はPython2,3の互換性のためにある

おまじない的に。標準モジュールを絶対パス?でインポートする
from __future__ import absolute_import

__class__はクラスタイプを知るために使う

>>> a = 1
>>> a.__class__
<class 'int'>
>>>import re
>>>re.__class__
<class 'module'>

ということで、クラスの型を出力してくれます。__type__ではないのが少し不思議ですが、そういうものなのでしょう。

0 件のコメント:

コメントを投稿