簡體   English   中英

Python如何正確應用類

[英]Python how to apply classes correctly

我編寫了以下類和程序:

class Coordinate(object):
    def __init__(self,x,y):
        self.x_coordinate = x
        self.y_coordinate = y

class CoordinatRow(object):
    def __init__(self):
        self.coordinaterow = []

    def add_coordinaterow(self, coordinate):
        self.coordinaterow.append(coordinate)

    def weave(self,other):
        lijst = []
        for i in range(len(self.coordinaterow)):
            lijst.append(self.coordinaterow[i])
            lijst.append(other.row[i]) 
        coordinaterow = lijst
        print coordinaterow

程序:

from Coordinates import Coordinate, CoordinatRow
from ipy_lib import file_input

'''functies'''

def split_and_add(invoer):
    rij = invoer.split('=')
    for line in rij:
        process_row(line)  

def process_row(line):
    temp_coordinate_row = CoordinatRow()
    rij = line.split()
    for coordinate in rij:
        coor = process_coordinate(coordinate)
        temp_coordinate_row.add_coordinaterow(coor)
    return temp_coordinate_row

def process_coordinate(coordinate):
    idunno = coordinate.split(',')
    return Coordinate(int(idunno[0]),int(idunno[1]))

'''programma'''
bestand = file_input()
split_and_add(bestand)
rows = split_and_add(bestand)
for row in rows:
    row.weave(row)

輸入如下所示:

5,4 4,5 8,7=6,3 3,2 9,6 4,3=7,6=9,8=5,5 7,8 6,5 6,4

Ech行用=分隔。 我想像這樣將每一行與下一行編織在一起:

5.4, 4.5, 8.7 weave with 6.3, 3.2, 9.6, 4.3
5.4, 6.3, 4.5, 3.2, 8.7, 9.6, 4.3

並將下一行插入此新行。

問題出在我上課的方式上。 我收到此錯誤:

for row in rows:
TypeError: 'NoneType' object is not iterable

這是怎么了?

def split_and_add(invoer):
    rij = invoer.split('=')
    for line in rij:
        yield process_row(line) 

如果您不想使用yield

def split_and_add(invoer):
    rij = invoer.split('=')
    rows = []
    for line in rij:
        rows.append(process_row(line))
    return rows

對於第二個問題,您可能需要執行以下操作:

for row in range(0,len(rows)-1):
    rows[row].weave(rows[row+1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM