1

假设我有以下代码:

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 装饰器是否被认为是不好的做法?有什么优点或缺点吗?

4

1 回答 1

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
于 2012-06-20T01:11:19.973 回答