python - Updating instance attributes of class -


i have been googling lot on topic , did not find commonly accepted way of achieving goal.

suppose have following class:

import numpy np class myclass:      def __init__(self, x):         self.x = x         self.length = x.size      def append(self, data):         self.x = np.append(self.x, data) 

and x should numpy array! if run

a = myclass(x=np.arange(10)) print(a.x) print(a.length) 

i get

[0 1 2 3 4 5 6 7 8 9] , 10. far good. if use append method

a.append(np.arange(5)) 

i [0 1 2 3 4 5 6 7 8 9 0 1 2 3 4] , 10. expected since instance attribute length set during instantiation of a. not sure pythonic way of updating instance attributes is. example run __init__ again:

a.__init__(a.x) 

and length attribute have correct value, in other posts here found somehow frowned upon. solution update length attribute in append method directly, kind of want avoid since don't want forget updating attribute @ point. there more pythonic way of updating length attribute class?

don't update it, read when need a getter:

class myclass:     ...      @property     def length(self):         return self.x.size 

Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -