【发布时间】:2016-09-20 09:56:36
【问题描述】:
最近我开始在 python 中使用 oop。我想为启动的属性编写一个通用的 get 或 set 方法。例如,Song 类具有多个属性和相应的 get 方法。我想避免使用多个 if 语句。只有两个属性没关系,但如果有> 5个属性,代码将难以阅读。是否可以在 args 中使用字符串从 init 获取值而不定义所有可能的情况?
class Song(object):
def __init__(self,title,prod):
self.title = title
self.prod = prod
def getParam(self,*args):
retPar = dict()
if 'title' in args:
print(self.title)
retPar['title'] = self.title
if 'prod' in args:
print(self.prod)
retPar['prod'] = self.prod
return(retPar)
我不确定这是否可能,因为我找不到任何东西。我怎样才能做到这一点?
【问题讨论】:
-
我不确定你为什么要这样做。为什么你需要一个方法?
-
return {attr: getattr(self, attr) for attr in args}…? -
@Daniel Roseman:为不熟悉python语法的同事提供一个功能,使他们不必直接访问属性。用于绘图等。
-
“我想为启动的属性编写一个通用的 get 或 set 方法” - 为什么?这不是 Java,要么直接访问它们,要么使用
@property。 -
为什么连最基本的 Python 语法都不熟悉的人会写 Python?
attrs = song.getParam('title', 'prod'); attrs['title']比song.title更好或更容易吗?