Pythonオブジェクト指向プログラミングの高度な記事カスタムクラス__getitem____getattr__ __call__

__getitem__

このメソッドは、オブジェクトのインデックス可能なリストを生成するため、たとえば、添え字で直接インデックスを付けることができます。

class Fib(object):
    def __getitem__(self, n):
        a, b = 1, 1
        for x in range(n):
            a, b = b, a + b
        return a
>>> f = Fib()
>>> f[0]
1
>>> f[1]
1
>>> f[2]
2
>>> f[3]
3
>>> f[10]
89
>>> f[100]
573147844013817084101

__getattr__

このメソッドは、存在しないプロパティが呼び出されると自動的に呼び出され、プロンプトやその他の情報を表示できます。プロンプトがない場合はNoneを返します。

class Student(object):

    def __getattr__(self, attr):
        if attr=='age':
            return lambda: 25
        raise AttributeError('\'Student\' object has no attribute \'%s\'' % attr)

_コール__

特定のメソッドは、インスタンスを介して直接呼び出すことができます。たとえば、

class Student(object):
    def __init__(self, name):
        self.name = name

    def __call__(self):
        print('My name is %s.' % self.name)

>>> s = Student('Michael')
>>> s() # self参数不要传入
My name is Michael.

callable()は、callable(Student())のように、オブジェクトを呼び出すことができるかどうかを確認するために使用されます。

 

参照元:https//www.liaoxuefeng.com/wiki/1016959663602400/1017590712115904

おすすめ

転載: blog.csdn.net/li4692625/article/details/109502477