Python中文
首页
教程
问答
标签
搜索
登录
注册
Python对象初始化错误。还是我误解了物体的工作原理?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<pre><code> 1 import sys 2 3 class dummy(object): 4 def __init__(self, val): 5 self.val = val 6 7 class myobj(object): 8 def __init__(self, resources): 9 self._resources = resources 10 11 class ext(myobj): 12 def __init__(self, resources=[]): 13 #myobj.__init__(self, resources) 14 self._resources = resources 15 16 one = ext() 17 one._resources.append(1) 18 two = ext() 19 20 print one._resources 21 print two._resources 22 23 sys.exit(0) </code></pre> <p>这将为<code>one</code>和<code>two</code>对象打印分配给<code>one._resources</code>的对象的引用。我认为<code>two</code>将是一个空数组,因为如果在创建对象时没有定义它,它显然是这样设置的。取消注释<code>myobj.__init__(self, resources)</code>也有同样的效果。使用<code>super(ext, self).__init__(resources)</code>也可以做同样的事情。在</p> <p>我能让它工作的唯一方法是使用以下方法:</p> ^{pr2}$ <p>我不应该在创建对象时手动设置默认值来实现这一点。或许我会。有什么想法吗?在</p> <p>我使用Python2.5和2.6进行了尝试。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您的问题是,默认值是在函数定义时计算的。这意味着同一个列表对象在实例之间共享。更多讨论请参见答案<a href="https://stackoverflow.com/questions/1132941/least-astonishment-in-python-the-mutable-default-argument">to this question</a>。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
plt.savefig不会覆盖现有文件
6 回答
plt.savefig不保存图像
5 回答
plt.savefig在jupyter笔记本中不起作用
7 回答
plt.savefig在从另一个fi调用时停止工作
9 回答
plt.savefig在调用plt.show之前保存空数字
3 回答
plt.save不创建png文件
4 回答
plt.scatter overlay分类数据帧列
9 回答
Plt.Scatter:如何添加title、xlabel和ylab
1 回答
plt.scatter()绘图与Matplotlib中的plt.plot()绘图类似
3 回答
plt.scatter错误'NoneType'对象在成功运行后没有属性'sqrt'
10 回答
plt.set_title()中的标题字符串有误
9 回答
plt.show()
10 回答
plt.show()不在Jupyter笔记本上渲染任何内容
6 回答
plt.show()不打印plt.plot only plt.scatter
1 回答
plt.show()不显示三维散射图像
6 回答
plt.show()不显示任何内容
9 回答
plt.show()不显示数据,而是保留它供下一个图表使用(spyder)
1 回答
plt.show()使终端挂起
7 回答
plt.show()无法使用此代码
4 回答
plt.show()没有打开新的图形风
8 回答