首页 > 解决方案 > 如何扩展一个类是Python

问题描述

我是学习 Python 的新手。我一直在编写一个数组类并创建许多方法来操作数组。这很有趣。为了说明这一点,我创建了一个网格类来创建一个二维数组。但现在我坚持这条指令:

“开发一个使用内置算术运算符的矩阵类(这是用于矩阵算术的)。矩阵类应该扩展网格类。”

我对如何计算网格之间的算术很有信心。但是,我不明白在矩阵类中扩展网格类的部分。只是玩弄它,我的矩阵类中有这段代码:

from grid import Grid

class Matrix:
    def __init__(self, rows, columns, fillValue):
        self.data = Grid(rows, columns, fillValue)

这是我的网格类:

"""
File: grid.py
"""

from arrays import Array

class Grid(object):
    """Represents a two-dimensional array."""

    def __init__(self, rows, columns, fillValue = None):
        self.data = Array(rows)
        for row in range(rows):
            self.data[row] = Array(columns, fillValue)

    def getHeight(self):
        """Returns the number of rows."""
        return len(self.data)

    def getWidth(self):
        "Returns the number of columns."""
        return len(self.data[0])

    def __getitem__(self, index):
        """Supports two-dimensional indexing with [][]."""
        return self.data[index]

    def __str__(self):
        """Returns a string representation of the grid."""
        result = ""
        for row in range(self.getHeight()):
            for col in range(self.getWidth()):
                result += str(self.data[row][col]) + " "
            result += "\n"
        return result

def main():
    g = Grid(10, 10, 1)
    print(g.getHeight())

if __name__ == "__main__":
    main()

我对如何在矩阵类中正确扩展网格类感到困惑。我理解导入声明的重要性;但是,我对如何正确编写我的构造函数有点困惑,以便这个语句

m1 = Matrix(3, 3, 2)
    print(m1)

会将这些参数传递给网格类并正确创建网格。例如,打印语句给出了这样的输出:<__main__.Matrix object at 0x000001CD65A77970>如果我理解正确,那应该打印出一个实际的数字网格,我不知道为什么它不是。任何想法肯定会帮助我!

标签: pythonclassoopimportextend

解决方案


推荐阅读