我是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)?
答案 0 :(得分:5)
该行
cstring1 = copy.copy(cstring2)
仅更改名为cstring1
的本地变量,不更改名为obj1
的外部作用域中的变量。
有关详细信息,请查看this other stackoverflow question。
答案 1 :(得分:1)
虽然您无法在
中修改输入参数cstring1def strcpy(cstring1,cstring2):
import copy
cstring1=copy.copy(cstring2)
您还可以采取其他措施来实现目标。
首先,您可以使strcpy
成为字符串类的一部分,并让该成员函数更新其自己的str
元素。
其次,您可以提供CString
设置和获取功能。这些函数可以直接用于将一个字符串复制到另一个字符串,也可以由执行字符串复制的成员函数使用。
Python是一种有趣的语言。它包含许多元素,使它看起来像C或Perl这样的常规命令式语言,并且你可以构造许多看起来像C的代码。就Python的纯粹性而言,你将被引导一路不做Python中的事情就像你在C编程一样。
我建议重新创建像strcpy这样的东西可以通过解决问题而不是Python来实现。首先,一个字符串可以简单地替换另一个字符串。
祝你好运。