我是新来的Python,所以我尝试写一个类来模拟字符串函数在C:在Python中复制对象?
class CString:
def __init__(self,str):
self.value=[]
self.value.extend(list(str))
def strcpy(cstring1,cstring2):
import copy
cstring1=copy.copy(cstring2)
def puts(cstring1):
print ''.join(cstring1.value)
strcpy的,但似乎并不奏效:
>>obj1=CString("Hello World")
>>obj2=CString("Hai World!")
>>puts(obj1)
Hello World!
>>puts(obj2)
Hai World!
>>strcpy(obj1,obj2)
>>puts(obj1)
Hello World!
上午我分配拷贝.copy(cstring2)错误?
啊,所以参考本身是通过价值传递。 谢谢! – pupul07
@ pupul07实际上,对象是通过引用传递的。但是1.你不可以修改一个'str'对象,并且2.做一个赋值不是*修改一个对象。对于C的'void func(type * arg){* arg = smth;}',没有等价物,即使它是,你也不期望void func(type * arg){arg = smth;}'要修改'arg'指向的参数而不是重新分配局部变量,是吗? – ZyX
@ pupul07啊,我误解了你的评论:对象是通过引用传递的,但引用是通过值传递的。想知道用什么语言编写的代码会修改外部变量(没有像'func(&arg)'(C)那样明确地传递引用,或者至少明确地请求'sub smth(\)' (Perl,尽管使用这个特性会让每一个#perl的人都看到代码后向你大喊))?我觉得这个功能很奇怪,导致难以找到的错误。 – ZyX