gpt4 book ai didi

python - 减少代码重复类设计

转载 作者:太空宇宙 更新时间:2023-11-04 10:47:15 25 4
gpt4 key购买 nike

我有一个类:

class HolderClass(object):

def __init__(self, list_of_objs):
self.my_objects = list_of_objs

def do_stuff(self):
for item in self.my_objects:
print item.a

#more methods like this...

self.my_objects 列表中的对象由单个类定义。这个类有几个实例变量。我想做的是避免代码重复,但允许我自己执行完全相同的计算,指定不同的实例变量。

所以不要像这样写另一个方法:

    def do_stuff_on_b(self):
for item in self.my_objects:
print item.b

我希望能够重新使用 do_stuff 方法,但指定一个不同的实例变量。有没有优雅的实现方式?

最佳答案

当然,传入属性名称,然后使用 getattr() function从各个实例中获取它:

def do_stuff(self, attr):
for item in self._my_objects:
print getattr(item, attr)

self.do_stuff('b') 调用它将打印 b self.my_objects 中列出的所有项目的属性

来自函数文档:

Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, 'foobar') is equivalent to x.foobar.

关于python - 减少代码重复类设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16438012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com