python - 如何概括这个类?

标签 python optimization

我有一些像下面这样的类,并且希望避免太多重复和不必要的臃肿代码。我正在寻找特定的优化,不是 code review .

当前代码:

class Item:
    def __init__(self, name, price):
        self.name = name
        self.price = price

    @classmethod
    def from_dictionary(cls, dictionary):
        return cls(
            name=dictionary['name'] if 'name' in dictionary else '',
            price=dictionary['price'] if 'price' in dictionary else ''
        )

所需(伪)代码:

class Item:
    def __init__(self, *args, **kwargs):
        for kwarg in kwargs:
            self[kwarg] = kwargs[kwarg]


    @classmethod
    def from_dictionary(cls, dictionary):
        return cls(
            for key, value in dictionary:
                key=value or ''
        )

如何在 Python 中实现接近我想要的代码?

最佳答案

您可以使用内置的setattr来设置属性:

class Item: 
    def __init__(self, *args, **kwargs): 
        for key, value in kwargs.items():
            setattr(self, key, value)


    @classmethod 
    def from_dictionary(cls, dictionary): 
        return cls(**dictionary)

在类方法中,我们使用 ** 运算符来解压给定的字典。

关于python - 如何概括这个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815359/

相关文章:

python - 如何在 Twisted 线程外处理数据

python - 检查 Python 字符串是否是有效的 Excel 单元格

python - Django MySQL - 将多个记录一起保存在数据库中

java - collat​​z 序列 - 优化代码

algorithm - 如何实现dp?

python - 当尝试次数多于对象时,我的随机播放算法会崩溃

python - python、井字棋游戏中的列表索引错误

algorithm - 我如何解决这个动态规划问题?

performance - 当奇数/偶数线程在 CUDA 中执行不同操作时优化代码性能

c++ - 为什么有时在类内部定义 C++ 方法?