Python:获取高级类中列出的类元素的属性



我在python中遇到以下问题。我声明了一个带有一些属性的类元素和一个带有列表填充的类网络

现在我用类元素的对象填充网络:e1,e2和e3。当我尝试获取填充网络的元素的属性时,出现错误。

你能帮我理解这些问题吗?

import sys
class element:
def __init__(self):
self.property = 1
def getProperty(self):
return(self.property)
class network:
def __init__(self):
self.population = []
def addElement(self, element):
self.population.append([element])
def getElementProp(self):
for i in range(0, len(self.population)):
#print(self.population[i])
print(self.population[i].getProperty())
print(sys.version_info)
e1 = element()
e2 = element()
e3 = element()
net = network()
net.addElement(e1)
net.addElement(e2)
net.addElement(e3)
net.getElementProp()
**Output:**
line 20, in getElementProp
print((self.population[i]).getProperty())
AttributeError: 'list' object has no attribute 'getProperty

您正在追加一个包含element实例的列表对象,而您应该将该实例直接附加到您的population列表中:

def addElement(self, element):
self.population.append(element)

您还可以expand方法同时获取一个或多个元素,而无需重复调用:

def addElements(self, *elements):
self.population.extend(elements)
...
net = network()
net.addElements(e1, e2, e3)

更重要的是,在您的getElementProp方法中,直接迭代元素而不是将range(len(...))与以后的列表索引一起使用更Pythonic

def getElementProp(self):
for e in self.population:
print(e.getProperty())

最新更新