使用Python中的字典模擬類

weixin_33941350發表於2017-11-25

使用python中的字典來模擬類,下面是一個簡單的例子

def newclass(**kwargs):
    """ 利用kwargs的update()方法來處理繼承問題"""
    def set(key, value):
        kwargs[key] = value

    kwargs['set'] = set
    return kwargs


def Mammal(**kwargs):
    """ 哺乳動物基類 """
    # 處理繼承問題 相當於__init__()
    kwargs.update(newclass())

    # 哺乳動物有四條腿,相當於屬性
    kwargs['legs'] = 4

    # 相當於方法
    def say():
        return "沒有這個方法"

    # 相當於方法
    def eat():
        return "沒有這個方法"

    # 利用lambda
    kwargs['say'] = say
    kwargs['eat'] = eat

    return kwargs


def Cat(**kwargs):
    print("獲得的引數", kwargs)

    kwargs.update(Mammal())

    def say():
        return "喵喵叫"

    kwargs['say'] = say
    return kwargs


mammal = Mammal()

# 方法屬性不再用 物件.方法 和 物件.屬性 而是用[]代替。
print(mammal['say']())
print(mammal['eat']())
print(mammal['legs'])

cat1 = Cat()
print(cat1['say']())
print(cat1['legs'])
print(cat1['eat']())
# print("cat1 毛的顏色是:", cat1['紅色'])


d = {"color": "紅色","legs":3}
# 設定屬性
cat2 = Cat(**d)
# 呼叫方法
print(cat2['say']())
# 讀取屬性
print(cat2['legs'])
# 呼叫方法
print(cat2['eat']())
print("毛的顏色是:", cat2['紅色'])

 

相關文章