2013-10-08 47 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