Pythonコアベース(二):魔法関数

1120 ワード

一:魔法関数とは
簡単な例を見てみましょう
class Company:
    def __init__(self, employee__list):
        self.employee = employee__list

company = Company(['tom','jack','jane'])
employee = company.employee
for item in employee:
    print(item)

印刷結果は間違いなくtom、jack、janeです.では、別の方法でPythonの魔法関数を使用します.
class Company:
    def __init__(self, employee__list):
        self.employee = employee__list
    def __getitem__(self, item):
        return self.employee[item]

company = Company(['tom','jack','jane'])
# employee = company.employee
# for item in employee:
#     print(item)
for item in company:
    print(item)

印刷結果は上記の結果と一致しています.使用していますgetitem__の魔法関数の後、companyオブジェクトを巡回するときに、その関数を探して巡回操作を行います.所有するgetitem__関数のオブジェクトは自動的に反復可能なタイプになります.
魔法関数とは?
pythonには、二重下線で始まり、二重下線で終わる関数が内蔵されています(自分では定義できません).
Pythonには、クラスの作成時に定義されたような、かなりの魔法関数が内蔵されています.getitem__関数を使用すると、クラスのオブジェクトを遍歴したり、スライスしたりすることができます.関連する魔法関数を定義していないと、これらの操作は異常を報告します.
Pythonに関する魔法関数の紹介は、この文章を見てみましょう.
https://segmentfault.com/a/1190000007256392