design pattern explore in python