是否可以使用属性修饰方法在Python中返回一个类?

时间:2012-06-20 01:08:34

标签: python

我们说我有以下代码:

class MyClass(object):
    def __init__(self, param):
        self.param = param

    @property
    def super_param(self):
        return Param(self, self.param)


class Param(object):
    def __init__(self, parent, param):
        self.param = param
        self.parent = parent

    @property
    def get_parent(self):
        return self.parent

我的问题是,以这种方式使用@property装饰器被认为是不好的做法吗?有任何优点或缺点吗?

1 个答案:

答案 0 :(得分:2)

为什么不

class MyClass(object):
    def __init__(self, param):
        self.param = Param(self, param)

我认为从一个地产中归还一个类并没有什么特别的错误;一个更好的问题是,你想通过这样做完成什么?

修改:如果您不想更改,请将其设为私有财产:

class MyClass(object):
    def __init__(self, param):
        self._param = param     # naming convention, 'don't muck with it'
        # OR
        self.__param = param    # name mangled

    @property
    def param(self):
        return self._param