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问题
如何在python中从数据帧列中删除分类值?
6 回答
如何在python中从数据帧列表中删除引号
8 回答
如何在python中从数据帧创建列表
1 回答
如何在Python中从数据帧创建嵌套的JSON
6 回答
如何在Python中从数据帧显示wordcloud
6 回答
如何在Python中从数据帧的时间戳中删除字符
1 回答
如何在Python中从数据帧绘制简单绘图?
6 回答
如何在python中从数据帧行提取具有特定长度的范围?
7 回答
如何在python中从数据帧设置dict中的值
5 回答
如何在Python中从数据库中获得一个结果
5 回答
如何在python中从数据框中绘制分类条形图
3 回答
如何在Python中从数据框中选择特定细节?
4 回答
如何在python中从数据集中删除unicode
7 回答
如何在python中从数据集中删除某些数值?
8 回答
如何在python中从数据集中选择行
3 回答
如何在Python中从数组中删除元素
6 回答
如何在python中从数组中删除单个倒逗号?
10 回答
如何在python中从数组中删除对象?
9 回答
如何在python中从数组中删除引号
4 回答
如何在python中从数组中删除所有最小值
8 回答