如何在类中使用列表?

2014-08-10 21:20:36 +08:00
 ljcarsenal
有这样的需求,定义一个类,该类的不同对象都具有列表,能进行独立的增删元素的操作。但如果把列表定义成类的成员的话,似乎所有对象公用一个列表。这样导致的结果就是所有对象的列表内容都一样。如何解决这个问题呢
2393 次点击
所在节点    Python
6 条回复
eriale
2014-08-10 22:10:00 +08:00
为什么会有这种情况?python中对象自己的属性是不会共享的。
class A():
def __init__(self):
self.lst = []
lll9p
2014-08-11 00:13:40 +08:00
在Python里,类变量通常在内部被当做字典来处理并遵循通常所说的方法解析顺序(Method Resolution Order (MRO))。

看这里: http://blog.jobbole.com/68256/
magine
2014-08-11 08:59:10 +08:00
如一楼所写的那样,把列表初始化放在构造函数中,而不是类空间中。
yueyoum
2014-08-11 12:39:40 +08:00
LZ 先去补一补 面向对象知识
magine
2014-08-11 21:46:54 +08:00
@yueyoum
其实python语法有个坑……
刚开始面向对象是从c++入门的,c++里对象自己的成员不是写在构造函数里的,公有的得加static……
然后刚开始写python没怎么看教程,结果也犯了楼主这个错误。
magine
2014-08-11 21:48:18 +08:00
@yueyoum
说错了,不是“公有的”是“静态成员”。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/127100

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX