3

我是 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) ?

4

2 回答 2

5

线

cstring1 = copy.copy(cstring2)

只改变被调用的局部变量cstring1,它不会改变被调用的外部范围内的变量obj1

查看其他 stackoverflow 问题以获取更多信息。

于 2012-05-28T02:00:33.730 回答
1

虽然不能修改中的输入参数 cstring1

def strcpy(cstring1,cstring2):
      import copy
      cstring1=copy.copy(cstring2)

您还可以做其他事情来实现您的目标。

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

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

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

我建议重新创建类似 strcpy 的东西最好通过解决问题来完成,而不是使用 Python。对于初学者,一个字符串可以简单地替换另一个字符串。

祝你好运。

于 2012-05-28T12:20:17.700 回答