我有这个类(在一个名为“ occ_grid.py ”的文件中):
class Grid:
def __init__(self, width, height, occupancy_value):
self.width = width
self.height = height
self.cells = []
# initialize grid to all specified occupancy value
for row in range(0, self.height):
self.cells.append([])
for col in range(0, self.width):
self.cells[row].append(occupancy_value)
def set_cell(self, point, value):
self.cells[point.y][point.x] = value
def get_cell(self, point):
return self.cells[point.y][point.x]
我有另一个类/方法(在文件“ worldmodel.py ”中):
class WorldModel:
def __init__(self, num_rows, num_cols, background):
self.background = occ_grid.Grid(num_cols, num_rows, background)
self.num_rows = num_rows
self.num_cols = num_cols
self.occupancy = occ_grid.Grid(num_cols, num_rows, None)
self.entities = []
self.action_queue = ordered_list.OrderedList()
def is_occupied(self, pt):
return (self.within_bounds(pt) and
occ_grid.get_cell(self.occupancy, pt) != None)
请注意“ def is_occupied ”如何使用方法“get_cell”。问题是,“get_cell”位于不同的文件中,它是不同类中的方法。我考虑过创建一个新的“网格”对象,但我很困惑我的代码中应该创建这个对象的位置。
答案 0 :(得分:4)
你非常接近。它只是:
self.occupancy.get_cell(pt)
你可以写:
occ_grid.Grid.get_cell(self.occupancy, pt)
那将是等同于 - 但是,这非常 unidiomatic 。
答案 1 :(得分:0)
要从文件Grid
中完全使用worldmodel.py
,您需要import
Grid
类。
您可以通过两种可能的方式执行此操作。
import occ_grid
。如果您这样做,则必须使用Grid
occ_grid.Grid
from occ_grid import Grid
。然后,您只需使用Grid
。mgilson的答案非常清楚如何在导入后使用它。