创建具有所需格式的间隔 class

Create an Interval class with desired format

我正在尝试创建一个名为 Interval 的 class,如果给定 1 个参数 a,它会以 [a,a] 格式创建它,如果给定 2 个参数 a 和 b,它会在格式 [a,b]。看下面代码

class Interval():

   def __init__(self,left,*args):

       if args:
           self.left=left
           self.right=args
       else:
           self.left=left
           self.right=left


   def __repr__(self):
       return("[{},{}]".format(self.left,self.right))

现在,当我只有一个参数时,它会以所需的格式打印出来,但是如果有 2 个参数,我会在括号内得到一个括号,见下文:

    a = Interval(1)
    b = Interval(2,4)
    print (a)
    print (b)

打印出来:

    [1,1]
    [2,(4,)]

为什么会这样?感谢任何帮助,谢谢。

'args' 是一个元组,这就是你得到括号的原因。

class Interval():

   def __init__(self,left,*args):

       if args:
           self.left=left
           self.right=args[0]
       else:
           self.left=left
           self.right=left


   def __repr__(self):
       return("[{},{}]".format(self.left,self.right))

为了尽可能通用,你可以试试这个:

class Interval():
  def __init__(self,left,*args):
     if args:
        self.left=left
        self.right=args
     else:
        self.left=left
        self.right=left
  def __repr__(self):
      return("[{},{}]".format(self.left,','.join(map(str, self.right))))
i = Interval(4, 4)
print(i)

输出:

[4,4]