Oct-29-2020, 06:31 AM
I am trying to implement getters and setters in a class using a numpy array as the base instance value, but I am not able to pass an array index argument to the getter function (and probably not to the setter function, but it never gets that far).
The code is as follows:
And this is the output I get:
Peter
The code is as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import numpy as np class Matrix: def __init__( self , msize): self .msize = msize self .mvalues = np.full([msize + 2 , msize + 2 , msize + 2 ], - 1 , dtype = np.int32) self .mvalues[ 1 : - 1 , 1 : - 1 , 1 : - 1 ] = 0 self .visited = np.zeros([msize + 2 , msize + 2 , msize + 2 ], dtype = np.int32) @property def visits( self , coord): return self .visited[coord[ 0 ], coord[ 1 ], coord[ 2 ]] @visits .setter def incr_visits( self , coord, incr): self .visited[coord[ 0 ], coord[ 1 ], coord[ 2 ]] + = incr def Coord(x, y, z): return np.full([ 3 ,], (x, y, z), dtype = np.int32) mycoord = Coord( 1 , 2 , 3 ) print ( "mycoord={}" . format (mycoord)) mygal = Matrix( 10 ) print ( "Before set:{}" . format (mygal.visits(mycoord))) mygal.incr_visits(mycoord, 10 ) print ( "After set:{}" . format (mygal.visits(mycoord))) |
Output:mycoord=[1 2 3]
Traceback (most recent call last):
File "C:\Users\MyUser\Test\clstest4.py", line 28, in <module>
print("Before set:{}".format(mygal.visits(mycoord)))
TypeError: visits() missing 1 required positional argument: 'coord'
Please tell me what I am doing wrong here.Peter