【发布时间】:2014-08-12 22:37:00
【问题描述】:
我遇到了很多麻烦,我相信这很容易解决。虽然,我到处寻找,但找不到我要找的东西。
我有三个模块,module1.py、module2.py、module3.py
例如,在 module1.py 中,我有一个这样的初始化类:
class MyClass():
def __init__(self):
self.name = ''
self.age = 0
在 module2.py 中,我使用该类创建了一个实例,如下所示:
from module1 import MyClass
import module3 # this is where i keep my functions that i
# repeatedly use for better code management
me = MyClass()
me.name = "John"
me.age = module3.func_that_does_stuff()
module3.example_func(me.name, me.age) # this function should manipulate the
# name and age lets say it turns john into
# rick, and 25 into 30
Module3.py
func_that_does_stuff():
return 25
example_func(name, age):
name = "rick"
age = 30
return name, age
就像我上面说的,在 module3 我有函数,但这里是我遇到问题的地方。我可以将那些objects(me.name 和me.age)传递给另一个模块中的函数,但它似乎没有更新me.name 和me.age。
所以当我尝试在模块 2 中打印时
print(me.name)
print(me.age)
我明白了:
self.name = "John"
self.age = 25
如何将对象的值传递给另一个模块,按照我认为合适的方式处理它们,并能够更新 me 的原始实例的 self.name 和 self.age 的内容??
希望这是有道理的。
【问题讨论】:
-
为什么不能通过“我”本身?
-
这是因为python中的参数是通过value而不是reference传递的。如果你有一个函数
def foo(x):,你不能改变x在调用上下文中引用的“东西”。