在自己的属性上调用类函数被认为是不好的做法吗?

时间:2016-05-19 14:11:23

标签: python

我可以直接在get_random_items()属性上调用random_items函数,还是在Python中被认为是不好的做法?

class Items(object):

    def __init__(self, tools, toys, food):
        self.tools = tools
        self.toys = toys
        self.yellow = food
        self.random_items = self.get_random_items([self.tools, self.toys, self.food])

    def get_random_items(self, item_list)
        # do stuff to get random items..
        return random_items

如果这是不好的做法,那么提供random_items

的更好方法是什么?

1 个答案:

答案 0 :(得分:1)

有效。但是如果你这样做,random_items的值只会在__init__期间计算一次。尽管toolstoysfood的值目前已更改,但您始终会获得旧值。

您应该使用property

class Items(object):

    def __init__(self, tools, toys, food):
        self.tools = tools
        self.toys = toys
        self.yellow = food

    @property
    def random_items(self):
        return self.get_random_items([self.tools, self.toys, self.food])

    def get_random_items(item_list)
        # do stuff to get random items..
        return some_random_items

您可以在其他功能中使用random_items like属性。