2017-05-15 116 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]