2013-10-08 80 views
0

一類,我在Python新手,現在用的類玩弄,打印可變FOM在Python

看一看這個簡單的代碼,

class Testing: 

    BB_Key_Length = {256 : 240} 

#method __init__() is a special method, which is called class constructor or initialization method that 
#Python calls when you create a new instance of this class.  
    def __init__(self, key_length): 
     self._key_length = key_length 
     self._n = int(key_length/8) 

     if key_length in self.BB_Key_Length: 
      self._b = self.BB_Key_Length[key_length] 
      print(self._b) 


Object1 = Testing(200) 
print(Testing.BB_Key_Length) 

第13行,這是撰文指出,print(self._b)這也是__init__功能內,但爲什麼當我創建的對象

Object1 = Testing(200) 

所有我想要的是PR self._b的價值不打印INT,我可以不能夠的self._b值打印

+2

由於'self.BB_Key_Length'中的if key_length。如果不滿足這個條件,那麼'print(self._b)'這行就不會發生。實際上,'key_length'將等於200,並且200不在字典'{256:240}' –

+0

中,但200在240和256的範圍內。爲什麼不打印然後 –

+1

這不是字典的工作方式。 '如果self.BB_Key_Length中的200只是檢查'self.BB_Key_Length'中的*鍵*是否等於200.但是'self.BB_Key_Length'中只有一個鍵,即256. –

回答

1

爲什麼self._b的價值不打印,當我創建對象Object1 = Testing(200)

由於打印語句是內部的if語句,這是錯誤的,因爲200不是字典self.BB_Key_Length中的鍵。

+0

但是200處於範圍爲240和256 ..爲什麼不打印,然後 –

+0

@Xufyan這不是一個範圍。這是一個字典。如果你想要一個範圍,使用'範圍'。 – Marcin

+3

@Xufyan另外,200不在範圍內(240,256)。 – Marcin