是否可以使用@property 装饰器创建返回矩阵或向量大小的属性只读!?

问题描述

在问题中,我想知道如何(如果可以的话)我可以创建一个属性来为我提供矩阵大小,但我想使用 property 装饰器来实现。

在这个例子中,是否可以使用这样的装饰器?

class Matrix:
    def __init__(self,m,n,init=True):
        if init:
            self.rows = [[0] * n for x in range(m)]
        else:
            self.rows = []
        self.m = m
        self.n = n


    def __getitem__(self,idx):
        return self.rows[idx]

    def __setitem__(self,idx,item):
        self.rows[idx] = item

我仍在探索语法,我想在这方面得到一些建议。

解决方法

你想做的很简单——教科书上的琐碎——所以不清楚你想要什么“建议”。 Stack Overflow 并不打算取代现有的教程或文档。见How much research effort is expected of Stack Overflow users?

class Matrix:
    def __init__(self,m,n,init=True):
        if init:
            self.rows = [[0] * n for x in range(m)]
        else:
            self.rows = []
        self.m = m
        self.n = n

    def __getitem__(self,idx):
        return self.rows[idx]

    def __setitem__(self,idx,item):
        self.rows[idx] = item

    @property
    def size(self):
        return self.m * self.n


if __name__ == '__main__':

    mat = Matrix(3,3)
    print(mat.size)  # -> 9