Paepoi

Paepoi » Python Tips » Python CLass

Python CLass

最終更新日 2019.03.31
自作クラスで for
#!/usr/bin/env python3

class Test():
    def __init__(self, end):
        self.end = end
    def __getitem__(self, n):
        # for を終わらせたい時は IndexError 例外を送る
        if n >= self.end:
            raise IndexError
        return n + 1

t = Test(7)

try:
    for n in t:
        print(n, end=',')
except Exception as e:
    print('IndexError がココに来ることはない')

print('done')

'''output
1,2,3,4,5,6,7,done
'''

自作クラスで with
#!/usr/bin/env python3

'''
    __init__ 処理が終わると __enter__ を自動実行します
    __enter__ で self を戻すと as で指定した変数に格納される
    with を抜けると __exit__ を自動実行
'''

class Message():
    def __init__(self):
        print('init')
 
    def __enter__(self):
        print('enter')
        return self
 
    def __exit__(self, *excinfo):
        print('exit')

    def run(self):
        print('run')

with Message() as msg:
    msg.run()

print('done')

'''output
init
enter
run
exit
done
'''

Copyright(C) sasakima-nao All rights reserved 2002 --- 2020.