最近,我开始在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)
我不确定(如果可以),因为我什么也找不到。我怎样才能做到这一点?
为不熟悉python语法的同事提供功能,这样他们不必直接访问attritube。对于绘图之类的东西
因为不一定要教python并且dot语法对在matlab中具有基本知识的人造成混淆
我认为这很容易教,您不应该为那么简单的事情而弯腰……但是假设这确实是您想要的,这看起来是个更好的主意:
class Song(object):
def __init__(self, title, prod):
self.title = title
self.prod = prod
def __getitem__(self, key):
return getattr(self, key)
song = Song('Foo', 'Bar')
print song['title']
请参阅https://docs.python.org/2/reference/datamodel.html#object.__getitem__和https://docs.python.org/2/library/functions.html#getattr。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句