如何在函数中输入属性列表

2024-09-22 16:37:45 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个具有多个属性的类。我想用同样的方法修改一些精选的。但是,由于我不能将属性放入列表中,这是相当乏味的。在

例如:

class BOB:
    def __init__(self,name,color,shape):
        self.lenname = len(name)
        self.lencolor = len(color)
        self.lenshape = len(shape)

def BOBmodify_lenname(instance):
    instance.lenname *= 2

def BOBmodify_lencolor(instance):
    instance.lencolor *= 2

def BOBmodify_lenshape(instance):
    instance.lenshape *= 2

我的目标是有一个属性列表形式的各种类型的输入,比如[lenshape,lencolor],然后有一个函数迭代列表并将它们乘以2。因为这是不可能的,我必须为每个属性使用一个函数

这里,我只有三个属性,我需要三个函数来修改每个属性。对于具有更多属性的类,这很快就变得不切实际了。如果有可能的话,那就太好了:

^{pr2}$

然后去做

^{3}$

据我所知,你不能把属性放在列表中,所以这是不可能的。那么我应该如何处理这种情况,我希望一个函数对几个不同的属性做同样的事情呢?虽然我在stack overflow和google上搜索过这个,但是没有找到任何相关的东西。请帮忙。谢谢!在


Tags: 方法instance函数nameself列表len属性
1条回答
网友
1楼 · 发布于 2024-09-22 16:37:45

可以这样定义方法,并将属性作为字符串传递:

def modify_attrs(self, attrs):
    for attr in attrs:
        val = getattr(self, attr)
        setattr(self, attr, val*2)

...

bobinstance.modify_attrs(['lenname', 'lenshape']) 

演示:

^{pr2}$

相关问题 更多 >