一个专业 有 三个班级,每个班级生成随机 1-3名学生,最后得到的三个班级对象的地址如下,为什么每个班级的学生都是一样的,有什么办法 可以生成随机班级 和 随机学生

一个专业 有 三个班级,每个班级生成随机 1-3名学生,最后得到的三个班级对象的地址如下,为什么每个班级的学生都是一样的,有什么办法 可以生成随机班级 和 随机学生?

import random

# 学生
class Student:
    ID = ''
    name = ''
    def __init__(self):
        pass
    pass
# 班级
class Group:
    stuArr = {}
    def __init__(self):
        x = random.randint(1,3)
        for i in range(x):
            self.stuArr['学生'+str(i)] = Student()
        pass
    pass

# 专业
class Professional:
    groArr = {}
    def __init__(self):
        r = 3
        for i in range(r):
            self.groArr['班级'+str(i)] = Group()
        pass
    pass

if __name__ == '__main__':
    p = Professional()

    for groValue in p.groArr.values():
        print()
        print(groValue.stuArr)
{'学生0': <__main__.Student object at 0x000002725947D1C0>, '学生1': <__main__.Student object at 0x0000027259482A60>, '学生2': <__main__.Student object at 0x0000027259482F70>}

{'学生0': <__main__.Student object at 0x000002725947D1C0>, '学生1': <__main__.Student object at 0x0000027259482A60>, '学生2': <__main__.Student object at 0x0000027259482F70>}

{'学生0': <__main__.Student object at 0x000002725947D1C0>, '学生1': <__main__.Student object at 0x0000027259482A60>, '学生2': <__main__.Student object at 0x0000027259482F70>}

img


这样试试看

import random
# 学生
class Student:
    def __init__(self,id,name):
        self.ID = id
        self.name = name
        pass
    pass
# 班级
class Group:
    def __init__(self):
        self.stuArr = {}
        x = random.randint(1,3)
        for i in range(x):
            self.stuArr['学生'+str(i)] = Student(i,'学生'+str(i))
        pass
    pass
# 专业
class Professional:
    def __init__(self):
        self.groArr = {}
        r = 3
        for i in range(r):
            self.groArr['班级'+str(i)] = Group()
        pass
    pass
if __name__ == '__main__':
    p = Professional()
    for groValue in p.groArr.values():
        print()
        print(groValue.stuArr)

你看一下这个,如果没有灵感我在给你写


```python
from random import randint
class_orrered = [[], [], []]
teachers = ['教师A','教师B','教师C','教师D','教师E','教师F','教师G','教师H']
for teacher in teachers:
    class_orrered[randint(0,2)].append(teacher)
for j in range(len(class_orrered)):
    print('办公室',(j+1),'的人数为:',len(class_orrered[j]),sep='')
    for teacher in class_orrered[j]:
        print(teacher,end=" ")
    print()


```

把类属性改为实例属性就行了, stuArr = {} 改为 self.stuArr = {} 放到init里

import random
# 学生
class Student:
    ID = ''
    name = ''
    def __init__(self):
        pass
    pass
# 班级
class Group:

    def __init__(self):
        self.stuArr = {}
        x = random.randint(1,3)
        for i in range(x):
            self.stuArr['学生'+str(i)] = Student()
        pass
    pass
# 专业
class Professional:
    groArr = {}
    def __init__(self):
        r = 3
        for i in range(r):
            self.groArr['班级'+str(i)] = Group()
        pass
    pass
if __name__ == '__main__':
    p = Professional()
    for groValue in p.groArr.values():
        print()
        print(groValue.stuArr)


基于 python 实现的中小学随机化分班算法
https://blog.csdn.net/jnxxhzz/article/details/108637551
可以给班级和学生订好序号,用random方法