Python中文
首页
教程
问答
标签
搜索
登录
注册
Python用基类方法更新子属性
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我花了一天的时间试图找到这个问题的答案,但什么也没找到。在</p> <p>假设我有几个类,每个类都包含一个与其他类相同的方法。在</p> <pre><code>class A: def __init__(self, attr1, attr2, color): self.__attr1 = attr1 self.__attr2 = attr2 self.__color = color def set_color(self, color): self.__color = color class B: def __init__(name, attr3, attr4, color): self.__attr3 = attr3 self.__attr4 = attr4 self.__color = color def set_color(self, color): self.__color = color </code></pre> <p>在这个例子中,相同的方法被简化为一个相同的方法set_color来说明我要做的事情。在</p> <p>有没有一种方法可以消除重复的代码,也许用下面的抽象类?在</p> ^{pr2}$ <p>我想用这种方式从蓝色变成红色 这样我就不必在每个类<code>A</code>和<code>B</code>中定义相同的方法</p> <pre><code>exampleA.set_color("red") </code></pre> <p>但这并不像我预期的那样工作,它没有改变<code>exampleA.__color</code>的值</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>唯一的原因是你使用了前缀为<code>__</code>的属性,这使得它们是“私有的”,因此不能被父类访问。不要这样做:只需使用普通属性名。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
pyVISA GPIB GET(组执行触发器)
2 回答
Pyvisa IOerror设备:Korad K3005d电源
5 回答
PyVISA mac OS X(山狮)安捷伦33250
7 回答
Pyvisa Pyusb无法加载大于1 MB的序列
8 回答
pyVisa RS232太慢
5 回答
PyVISA RS232超时错误(安捷伦电源)
5 回答
PyVISA SCPI命令和查询(值更新问题)
8 回答
PyVISA SerialInstrument需要硬重置才能在故障后连接
2 回答
pyvisa,未找到函数viOpen
7 回答
pyVISA:以编程方式将仪器返回到本地模式
5 回答
pyvisa:接口类型是什么意思?
7 回答
pyvisa.errors.VisaIOError:VI_ERROR_TMO(1073807339):操作完成前超时
2 回答
PyVisa“更复杂的示例”根本不运行Keithley 2400不理解的命令
3 回答
PyVisapy后端
4 回答
PyVISA不能写入超过7F的十六进制字符
9 回答
PYVISA中的ENUM模块和cStringIO模块
3 回答
PyVisa代码的图形用户界面
7 回答
Pyvisa使用按键电源超时
10 回答
PyVISA和Kethley 2701只能从一个通道获取结果
2 回答
PyVisa和Printing New D
8 回答