Quantcast
Channel: What is the purpose of the `self` parameter? Why is it needed? - Stack Overflow
Viewing all articles
Browse latest Browse all 77

Answer by ninjagecko for What is the purpose of the word 'self'?

$
0
0

I will demonstrate with code that does not use classes:

def state_init(state):    state['field'] = 'init'def state_add(state, x):    state['field'] += xdef state_mult(state, x):    state['field'] *= xdef state_getField(state):    return state['field']myself = {}state_init(myself)state_add(myself, 'added')state_mult(myself, 2)print( state_getField(myself) )#--> 'initaddedinitadded'

Classes are just a way to avoid passing in this "state" thing all the time (and other nice things like initializing, class composition, the rarely-needed metaclasses, and supporting custom methods to override operators).

Now let's demonstrate the above code using the built-in python class machinery, to show how it's basically the same thing.

class State(object):    def __init__(self):        self.field = 'init'    def add(self, x):        self.field += x    def mult(self, x):        self.field *= xs = State()s.add('added')    # self is implicitly passed ins.mult(2)         # self is implicitly passed inprint( s.field )

[migrated my answer from duplicate closed question]


Viewing all articles
Browse latest Browse all 77

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>