【问题标题】:Python, class initialization with one valuePython,一个值的类初始化
【发布时间】:2017-10-14 13:59:15
【问题描述】:

我有一个类,它接受两个数字并将它们打印在一个列表中

class Numbers():

    def __init__(self, l, r):

        self.l = l
        self.r = r

    def __str__(self):
        print([self.l, self.r])

例如:

N = Numbers(1, 3) #[1, 3]

现在,我需要扩展类,以便它可以只用一个值初始化

N2 = Numbers(2) #[2, 2]

现在我对如何继续有点一无所知,感谢任何帮助

【问题讨论】:

标签: python class initialization


【解决方案1】:

您可以简单地使用默认参数:

class Numbers():

    def __init__(self, l, r=None):

        self.l = l
        if r is None:
            self.r = l
        else:
            self.r = r

    def __str__(self):
        return str([self.l, self.r])

print(Numbers(1, 2))
# [1, 2]
print(Numbers(3))
# [3, 3]

【讨论】:

    【解决方案2】:

    这个怎么样:

    def __init__(self, l, r = None):
    
        self.l = l
        if r is None:
            self.r = l
        else:
            self.r = r
    

    正如其他人已经指出的那样,您还需要修改您的 __str__ 方法,如下所示:

    def __str__(self):
        return str(self.l) + "," + str(self.r)
    

    【讨论】:

      【解决方案3】:

      试试这个:

      class Numbers:
      
          def __init__(self, l, r=None):
              self.l = l
              self.r = r if r else l
      
          def __str__(self):
              return str([self.l, self.r])
      

      例如:

      n1 = Numbers(3, 5)
      print(n1)  # [3, 5]
      n2 = Numbers(2)
      print(n2)  # [2, 2]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多