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

2024-05-19 10:28:54 发布

您现在位置: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

Tags: self网络元素netdefsyselementpopulation
1条回答
网友
1楼 · 发布于 2024-05-19 10:28:54

您正在附加一个包含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())

相关问题 更多 >

    热门问题