【发布时间】:2020-10-15 14:07:34
【问题描述】:
我正在做有关制作模块的作业,过去 5 个小时我一直在为此苦苦挣扎,我需要帮助来理解这一点。
我必须创建几个以某种方式交互的类,这是我到目前为止所做的代码。
#----------------------------------------
#This class makes an element to put inside a piece of the block
class Element:
def __init__(self, tipus, alcada):
self.tipus = tipus
self.alcada = alcada
#---------------------------------------------------------------
#This class makes a block separated in "ncossos" number of pieces
class MobleModular:
alt = 0
ample = 0
ncossos = 0
def __init__(self, alt, ample, ncossos):
global dict
self.alt = alt
self.ample = ample
self.ncossos = ncossos
#-------------------------------------
#This is the only way i know of making a database for each piece of the block
dict = {}
for x in range(self.ncossos):
dict[x] = []
#This returns {0: [], 1: [], 2: [], 3: []} using number 4 in "ncossos" at __init__
然后我必须使用 Element() 来创建要存储在每个列表中的元素,所以我做了这个
def afegir(self, nc, tipus, alcada):
self.nc = nc #I access the dictionary with this number
self.tipus = tipus
self.alcada = alcada
y = Element(tipus, alcada)
dict[nc].append(y)
#--------------------------------
#Then i enter the following values
m.afegir(0, 'A', 90)
m.afegir(0, 'C', 20)
m.afegir(0, 'C', 20)
m.afegir(0, 'C', 30)
m.afegir(1, 'A', 90)
m.afegir(1, 'A', 30)
m.afegir(1, 'C', 20)
m.afegir(1, 'C', 30)
m.afegir(2, 'B', 30)
m.afegir(2, 'B', 30)
m.afegir(2, 'B', 30)
m.afegir(2, 'B', 40)
m.afegir(2, 'C', 30)
m.afegir(3, 'B', 60)
m.afegir(3, 'A', 70)
m.afegir(3, 'C', 30)
现在我的列表充满了对象,没关系,因为我可以调用“dict[0][0].tipus/alcada”来获取对象值
问题就从这里开始,练习要求我做这个,我会展示它,因为我不知道如何解释它
x = m[1, 3]
#The first number being the dictionary position and the second number being the nested list position,
#so it returns the THIRD element from the FIRST piece of the block
#And when i call:
x.tipus, x.alcada
#It has to return:
('C', 20)
我到底是怎么做到的?我需要用括号调用我的实例,然后将位置的对象分配给一个新变量
【问题讨论】:
标签: python class module instance brackets