代码之家  ›  专栏  ›  技术社区  ›  JustANoob

创建具有所需格式的Interval类

  •  0
  • JustANoob  · 技术社区  · 7 年前

    我试图创建一个名为Interval的类,如果给定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))
    

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

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

    打印:

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

    为什么会发生这种情况?感谢您的帮助。

    2 回复  |  直到 7 年前
        1
  •  1
  •   epinal    7 年前

    “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))
    
        2
  •  0
  •   Ajax1234    7 年前

    为了尽可能通用,您可以尝试以下方法:

    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]