代码:
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
预期结果
bar!!!
实际结果
bar
如何在init中调用类的方法?
最佳答案
修改self.z
,而不是inp
:
def my_function(self, inp):
self.z += '!!!'
其次,字符串在 python 中是不可变的,因此修改 inp
不会影响原始字符串对象。
看看当 self.z
是可变对象时会发生什么:
class C:
def __init__(self, ):
self.z = []
self.my_function(self.z)
def my_function(self, inp):
inp += '!!!'
print inp
print self.z
C()
输出:
['!', '!', '!']
['!', '!', '!']
关于python - 你如何在 __init__ 中调用类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17598914/