Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要帮助创建Python类吗_Python_Python 3.x - Fatal编程技术网

需要帮助创建Python类吗

需要帮助创建Python类吗,python,python-3.x,Python,Python 3.x,我需要一些关于创建python类和方法的帮助。我真的不知道我做错了什么,但我一直得到正确的答案,然后这个错误: 我想用两个字符串创建一个对象,交替合并它们。例如,对象应该是obj.s1=aaaaa,obj.s2=bb,正确的输出应该是:ababaaa 如需任何帮助,请提前通知Ty:D class stringToMerge: def __init__(self, string1, string2): self.string1 = string1 self.string2 =

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

我想用两个字符串创建一个对象,交替合并它们。例如,对象应该是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) 

您的代码已经在打印预期的输出。但另外,由于您正在打印printobj类的实例,所以您会收到此消息。注释或删除此行,您将无法再次找到此行

您的主要问题是,您没有返回任何内容,而是试图打印对象。这就是它打印出来的原因。在下面的代码段中,我将代码编辑得更简洁,并向函数中添加了一条return语句。完成后,我为SM方法的返回值分配了一个变量,并打印了该变量


你真的想要一个单独的SM方法吗?如果是的话,它真的需要接受论点吗?您没有从初始值设定项中存储的状态中获益。看起来你真正需要的是一个,一个,一个,一个,一个,一个,一个,一个,没有SM。是否允许您使用itertools模块?如果是这样的话,将更干净地进行合并。joinroundrobinself.string1、self.string2将完成所有操作。不会出现错误。这是请求打印对象时的常规输出。你应该在你的类中提供一个_repr__和一个_str__方法。一个只有两个方法的类,其中一个是uu init uu,可能只是一个函数;该方法不需要self以外的参数,您可以定义string1=self.string1;string2=self.string2在method.BTW的主体中,关于样式类名称的注释应该是大写的,方法应该是snake_大小写。应该为常量保留大写。
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)