问题描述
在问题中,我想知道如何(如果可以的话)我可以创建一个属性来为我提供矩阵大小,但我想使用 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