需要帮助创建Python类吗

2024-10-05 14:25:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一些关于创建python类和方法的帮助。我真的不知道我做错了什么,但我一直得到正确的答案,然后这个错误: <__main__.stringToMerge object at 0x7f9161925fd0>

我想用两个字符串创建一个对象,交替合并它们。例如,对象应该是obj.s1="aaaaa"obj.s2="bb",正确的输出应该是:"ababaaa"

如需任何帮助,请提前通知Ty:D

class stringToMerge:
  def __init__(self, string1, string2):
    self.string1 = string1
    self.string2 = string2

  def SM(self, string1, string2):
    self.string1 = string1
    self.string2 = string2
    string3 = ""
    i = 0
    while i<len(string1) and i<len(string2):
      string3 = string3+string1[i]
      string3 = string3+string2[i]
      i = i+1
    while i<len(string1):
      string3 = string3+string1[i]
      i = i+1
    while i<len(string2):
      string3 = string3+string1[i]
      i = i+1  
    print(string3)


obj = stringToMerge('aaaaa', 'bb')
obj.SM(obj.string1, obj.string2)
print(obj) 

Tags: 对象方法selfobjlendefsmprint
2条回答

Your main Issue was that you were not returning anything and you were trying to print the object. Hence the reason it printed out <main.stringToMerge object at 0x7f9161925fd0>. In the snippet below I edited the code to be more concise, and I added a return statement to the function. Once this was done, I assigned a variable to the return value of the SM() method and printed said variable

class stringToMerge:
  def __init__(self, string1, string2):
    self.string1 = string1
    self.string2 = string2
  def longestString(string1,string2):
      if len(string1) < len(string2):
          return string2
      else:
          return string1
  def SM(self, string1, string2):
    string3 = ""
    i = 0
    for char1,char2 in zip(string1, string2):
        string3 += char1+char2
        i+= 1
    longestString = stringToMerge.longestString(string1,string2)
    return string3+longestString[i:]

obj = stringToMerge('aaaaa', 'bb')
final = obj.SM(obj.string1, obj.string2)
print(final)

您的代码已经在打印预期的输出。但是另外,您会收到这个消息<__main__.stringToMerge object at 0x7f9161925fd0>,因为您正在打印类print(obj)的实例。注释或删除此行,您将无法再次找到此行

相关问题 更多 >