python中的对象索引

2024-09-27 00:14:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python创建了以下对象

它创建一个arc类的对象,然后使用对象arc创建另一个对象网络

class Arc:
    # Creates an object of class arc
    def __init__(self, tailNode = 0, headNode = 0, lowerBound = 0, upperBound = 0, cost = 0):
        self.tailNode = tailNode
        self.headNode = headNode
        self.lowerBound = lowerBound
        self.upperBound = upperBound
        self.cost = cost
    def displayArc(self):
        print("Tail Node : ", self.tailNode,  "\nHead Node : ", self.headNode, "\nLower Bound : ", self.lowerBound, "\nUpper Bound ; ", self.upperBound, "\nCost : ", self.cost, "\n")

class Node:
    # Create an object of class node
    def __init__(self, nodeName = 0, distLabel = 0, preNode = 0):
        self.nodeName = nodeName
        self.distLabel = distLabel
        self.preNode = preNode

class Network:
     # Creates a network from given arcs
     def __init__(self, fileName):
        global arcNo 
        arcNo = 0

        self.fileName = fileName
        f = open(self.fileName)
        x = f.readlines()

        arcList = [ Arc() for i in range(len(x))]

    for i in range(len(x)):
        temp = x[i]
        temp = temp.split("\n")
        temp = ",".join(map(str, temp))
        temp = temp.split(",")
        arcList[i] = Arc(temp[0], temp[1], temp[2], temp[3], temp[4])
        arcNo += 1

    print(arcNo)

net = Network("arcList.txt")
print(type(net))
print(net[1])

当打印声明来的时候

^{pr2}$

如何支持索引以便可以通过网络对象的索引调用它?在


Tags: 对象selfdeffilenametempclassprintcost
2条回答

为了支持索引,网络类应该有一个__getitem__()方法(http://docs.python.org/reference/datamodel.html#object.getitem)。在

假设net[index]返回arcList变量,您可以简单地重写[]运算符

class Network:
    def __getitem__(self,index):
         return arcList[index]

打印类也需要一个方法。这可能对你有帮助 How to print a class or objects of class using print()?

相关问题 更多 >

    热门问题