用Python复制对象?

时间:2012-05-28 01:56:59

标签: python object copy

我是Python的新手,所以我尝试编写一个类来模拟C:中的字符串函数

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.copy(cstring2)?

2 个答案:

答案 0 :(得分:5)

该行

cstring1 = copy.copy(cstring2)

仅更改名为cstring1本地变量,更改名为obj1的外部作用域中的变量。

有关详细信息,请查看this other stackoverflow question

答案 1 :(得分:1)

虽然您无法在

中修改输入参数cstring1
def strcpy(cstring1,cstring2):
      import copy
      cstring1=copy.copy(cstring2)

您还可以采取其他措施来实现目标。

首先,您可以使strcpy成为字符串类的一部分,并让该成员函数更新其自己的str元素。

其次,您可以提供CString设置和获取功能。这些函数可以直接用于将一个字符串复制到另一个字符串,也可以由执行字符串复制的成员函数使用。

Python是一种有趣的语言。它包含许多元素,使它看起来像C或Perl这样的常规命令式语言,并且你可以构造许多看起来像C的代码。就Python的纯粹性而言,你将被引导一路不做Python中的事情就像你在C编程一样。

我建议重新创建像strcpy这样的东西可以通过解决问题而不是Python来实现。首先,一个字符串可以简单地替换另一个字符串。

祝你好运。