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._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
您可以查看 this 以获取更多示例。希望这可以帮助你:)
我希望使用 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._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
您可以查看 this 以获取更多示例。希望这可以帮助你:)