python - 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)
解决方案
正如评论所说,您可以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
您可以查看此内容以获取更多示例。希望这可以帮到你 :)
推荐阅读
- javascript - 动画导航与另一个导航一起移动
- linux - 使用 ls 时权限被拒绝
- html - 有延迟的动画
- python - 如何在计算曲线拟合时将数据框系列或数组传递给指数函数
- python - 烧瓶后台线程 - 503 错误
- reactjs - 为什么 justify-content-center 不能在反应中工作?
- javascript - 在 Javascript 中的字典中查找最近的向量
- php - 如何将一条路由重定向到我的 PHP 文件,将所有其他路由重定向到我的 React 应用程序
- bash - bash:将子目录中每个文件的前 n 行写入具有相同文件名的新目录
- javascript - 获取或创建客户端 ID 以用作随机种子