2017-05-15 70 views
0

我有一个类,它有两个数字,并将它们打印在列表Python中,类初始化一个值

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] 

现在我对如何进行,有任何帮助表示赞赏

+0

'__str__'应该返回一个字符串,而不是打印的东西。 – user2357112

+0

这可能有帮助吗? http://stackoverflow.com/questions/13382774/initialize-list-with-same-bool-value – codekaizer

回答

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] 
0

如何:

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) 
0

试试这个:

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]