如何为类编写通用的get方法?

时间:2016-09-20 09:56:36

标签: python oop methods args

最近我开始在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)

我不确定,如果可能,因为我找不到任何东西。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

  

为不熟悉python语法的同事提供函数,这样他们就不必直接访问attritubes。用于绘图等事情

     

因为没有必要教授python,并且对于在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