Python class 按顺序创建属性

Python class creates attributes in order

我希望使用 class 方法进行一些计算,并为每个函数(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)

正如评论所说,您可以将 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._dself._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

您可以查看 this 以获取更多示例。希望这可以帮助你:)