Python在Init声明对象函数

时间:2014-07-07 08:11:50

标签: python

假设我有一个传递了一组选项的类。

例如:

class Thing(object): 
    def __init__(self, options): 
        self.name = options['name']
        if options['material'] == 'organic': 
            self.living = options['living'] 
            if self.living: 
                self.kingdom = options['kingdom'] 
        else:
            self.material = options['material'] 

因此,如果它是物质的和有机的,它将有一个额外的选项,指明它是否活着,如果它的生活,它也将有一个王国等。

假设我想在class Thing中定义一个函数,例如:

def belongToKingdom(self): 
    print self.kingdom

但我只想在__init__定义这样一个函数,如果在选项中传递了王国,否则会被忽略。完成此任务的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

class Thing(object):
    def __init__(self, **options):
        if options.get('living',None):
            def belongToKingdom(self):
                print(self.kingdom)
            self.kingdom = options['kingdom']
            self.belongToKingdom = belongToKingdom