python - How do you call a class' method in __init__? -


code:

class c:     def __init__(self, **kwargs):         self.w = 'foo'         self.z = kwargs['z']         self.my_function(self.z)         def my_function(self, inp):         inp += '!!!'  input_args = {} input_args['z'] = 'bar' c = c(**input_args) print c.z 

expected result

bar!!! 

actual result

bar 

how call class' method in init?

modify self.z, not inp:

def my_function(self, inp):     self.z += '!!!' 

secondly strings immutable in python, modifying inp won't affect original string object.

see happens when self.z mutable object:

class c:     def __init__(self, ):         self.z = []         self.my_function(self.z)         def my_function(self, inp):         inp += '!!!'         print inp         print self.z  c()         

output:

['!', '!', '!'] ['!', '!', '!'] 

Comments