使用Python中的字典模拟类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python中的字典模拟类相关的知识,希望对你有一定的参考价值。

使用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[红色])

 

以上是关于使用Python中的字典模拟类的主要内容,如果未能解决你的问题,请参考以下文章

13 个非常有用的 Python 代码片段

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第19篇):合并多个字典

Python snippet(代码片段)

Python小技巧:使用字典模拟 switch/case 语句

python 利用 dict 模仿 switch语句功能