首页 > 解决方案 > Python 类按顺序创建属性

问题描述

我希望使用类方法进行一些计算并为每个函数(create_d 和 create_e)创建一个新属性。感觉不是很优雅,因为必须在 create_e 之前运行 create_d。有没有更好的方法来组织它们?

new_obj = TestClass(a, b, c)
new_obj.create_d(data)
new_obj.create_e(data)

class TestClass(object):

    def __init__(self, a, b, c):
        self._a = a
        self._b = b
        self._c = c

    def create_d(self, data):
        self._d = math(data, self._a, self._b)

    def create_e(self, data):
        self._e = more_math(data, self._d)

标签: pythonclassattributesclass-method

解决方案


正如评论所说,您可以data作为参数传递

class TestClass(object):

    def __init__(self, a, b, c, data):
        self._a = a
        self._b = b
        self._c = c
        self._d = math(data, self._a, self._b)
        self._e = more_math(data, self._d)

然后初始化:

new_obj = TestClass(a, b, c)

编辑:

如果您不想携带self._d并且self._e因为他们的计算非常昂贵,您可以使用properties如下:

@property
def create_d(self, data):
  return math(data, self._a, self._b)
    
@property
def create_(self, data):
  return more_math(data, self._d)

然后当您需要这些值时,只需调用properties

new_obj.create_d # return the calculation

或者,如果您要在将其存储在变量中之后使用:

e = new_obj.create_e

您可以查看内容以获取更多示例。希望这可以帮到你 :)


推荐阅读