python - 向对象添加属性
问题描述
我试图找到多项式的阶数。我创建了一个名为“order”的方法,将self.order 设置为它所使用的多项式的阶,即polynomial1.order (p1.order)。但是,为了添加 order 属性以便 p1.order 可以工作,我发现我需要先执行 p1.order() 。如何删除此步骤以使其自动执行?
这是我的代码,如果有任何其他失礼,请通知我,我是新来的课程:
class Polynomial(object):
def __init__(self,*p_coeffs):
self.p_coeffs = list(p_coeffs)
def order(self):
self.order = len(self.p_coeffs)
p1 = Polynomial(2,0,4,-1,0,6)
p2 = Polynomial(-1,3,0,4.5)
p1.order() #<-- this step is the one I want to remove so I do not need to write it for every polynomial
print(p1.order)
提前致谢
编辑:我需要在这个过程中保留我的“订单”方法
解决方案
只需执行您希望在__init__()
方法中自动发生的所有实例初始化。
class Polynomial(object):
def __init__(self,*p_coeffs):
self.p_coeffs = list(p_coeffs)
self.set_order()
def set_order(self):
self.order = len(self.p_coeffs)
p_list = [
Polynomial(2,0,4,-1,0,6),
Polynomial(-1,3,0,4.5),
]
for p in p_list:
print(p.order)
输出:
$ python test.py
6
4
推荐阅读
- google-apps-script - 在 Google 表格的图表中将注释显示为工具提示
- angular - 选项列表更改时选择的形式控制选择不会更新值
- reactjs - 如何在运行时切换 scss/css 文件或在 reactjs 中切换主题
- c# - 设置增加和减少按钮不超过条件
- python - 不一致的自动熊猫日期标签
- r - 如何削减日期时间并仅保留时间部分
- swagger - OpenAPI 3 - 重用属性
- php - Prestashop 1.6 结账时篡改金额
- css - 如何通过 3rd 方 NPM 模块将 CSS 应用于 Angular 项目中使用的子组件 html?
- matlab - 如何在MATLAB上制作♡的标记图?