Python 为什么可以';我有一个类,它包含同一类的对象列表吗?

Python 为什么可以';我有一个类,它包含同一类的对象列表吗?,python,class,oop,object,Python,Class,Oop,Object,我有以下课程: class Group(object): _name = '' _link = '' _collection = [] 我有以下功能: def getSubGroups(url, groups): group = groups[0] #sleep(15) html = requests.get(url+group.getLink()) content = BeautifulSoup(html.text, "lxml")

我有以下课程:

class Group(object):
    _name = ''
    _link = ''
    _collection = []
我有以下功能:

def getSubGroups(url, groups):
    group = groups[0]
    #sleep(15)
    html = requests.get(url+group.getLink())
    content = BeautifulSoup(html.text, "lxml")
    subGroup = None
    #Retrieving groups and people listed above these groups
    for div in content.find_all('div', {"class":["size14", "person-box"]}):
      #Group
      if "size14" in div.attrs['class']:
        if subGroup != None:
          #Adding a subgroup to its repective subgroup
          group.addCollection(subGroup)
          print 'NFL = ', group.getName()
          print '2014...', subGroup.getName()
          print 'List of groups', group.getCollection()
          print 'List of persons', subGroup.getCollection()
          break
        subGroup = Group()
        subGroup.setLink(div.a['href'])
        subGroup.setName(div.text)
      #Person
      if "person-box" in div.attrs['class']:
        divPerson = div.find('div', 'name')
        person = Person()
        person.setName(divPerson.text)
        person.setLink(divPerson.a['href'])
        #Adding a person to its repective group
        subGroup.addCollection(person)
    return group
该打印为我提供了以下输出:

NFL =  NFL Players 
2014... 2014 NFL Draft Picks and Rookies
List of groups [<Person.Person object at 0x7fd79a4bff50>, <Person.Person object at
0x7fd79a4bff90>, ..., <Group.Group object at 0x7fd79a4bff10>]
List of persons [<Person.Person object at 0x7fd79a4bff50>, <Person.Person object at
0x7fd79a4bff90>, ..., <Person.Person object at 0x7fd79a454990>,
<Group.Group object at 0x7fd79a4bff10>]
NFL=NFL球员
2014... 2014年NFL选秀和新秀
组列表[,…,]
人员名单[,…]。。。,
]
正如那些关注我的人所看到的,我正在运行一个测试,我希望有=>组列表
[]
,但是它也在那里添加了所有person对象


为了测试我的理智,我创建了另一个名为Subgroup的类,现在它对我来说运行良好。但是,我想,在java或C++中,我可以做到这一点。为什么我不能使用python?我不想创建另一个完全相同的类

这可能是您的问题

class Group(object):
    _name = ''       #  <--- variables defined here belong
    _link = ''       #  <--- to the class itself, not to 
    _collection = [] #  <--- class instances.

然后,每次你说
Group()
,你将创建一个新的
Group
对象,它有自己的列表,名为
\u collection

什么是
Group
?什么是
addCollection
?您的代码没有显示任何实际向
\u collection
添加内容的内容。BreenBarn,很抱歉没有发布这些方法,我在这里是新手,但请记住addCollection是类的一个方法,如下所示:def addCollection(self,data):self.\u collection.append(data)
subGroup.addCollection(person)
–您永远不会更改哪个组
子组
引用,因此您最终当然会向其中添加所有内容。另外:不要用Python编写getter/setter方法。对不起,我没有真正理解你的意思。这里的问题是,组得到的是person,但组只应该有subgrop,然后子组得到person。顺便说一句,Python中的getter/setter有什么问题吗?谢谢,关于Python,我不知道这一点。我知道屏幕后面的问题是什么(关于十六进制数等等),但我真的不知道如何解决它。现在它工作得很好。谢谢你的帮助,没问题。顺便说一句,十六进制数通常是事物所在的实际内存地址。如果它们是一样的,那么它就是同一个物体。
class Group(object):
    def __init__(self):
        self._name = ''        # <--- variables defined here
        self._link = ''        # <--- belong to the instance only
        self._collection = []