2017-02-20 98 views
0

我是python的新手,main()方法和類def讓我感到困惑。我正在嘗試創建一個布隆過濾器,並且我的程序一直在終止,因爲我認爲我沒有正確地調用它。Python中的主要功能

class BloomFilter(object): 
     def __init__(self, numBits, numHashFunctions): 
      self.numBits = numBits 
      self.bitArray = [0] * numBits 
      self.hash = bloomFilterHash(numBits, numHashFunctions) 

     def insert(self, key): 

     def lookup(self, key): 

     def rand_inserts(self,num): 

     def main(): #not sure if i should put this inside or outside class 
      bloomfilter = BloomFilter(100,5) 
      bloomfilter.rand_inserts(15) 

    if __name__ == '__main__': 
     BloomFilter().main() 

所以,如果我想創建一個布隆過濾器100個加numBits和5個散列函數,我應該叫,根據「if__name__」或在高清主?我不確定是否我正確調用這些,因爲我對java更熟悉。謝謝!

def main(): 
     bloomfilter = BloomFilter(100,5) 
     bloomfilter.rand_inserts(15) 
+0

Python中沒有特殊的「主」功能。 –

回答

2

name == '__main__'條款是確保你的代碼只有當模塊直接調用運行,而不是,例如,如果你是從另一個模塊中的一個模塊中導入的東西。 main()不是一個Python類的特殊方法,所以我相信你的目標下面是這個(簡體):

class BloomFilter(object): 
    def __init__(self, numBits, numHashFunctions): 
     self.numBits = numBits 
     self.bitArray = [0] * numBits 
     self.hash = bloomFilterHash(numBits, numHashFunctions) 


if __name__ == '__main__': 
    # creates an instance of the class 
    bloomfilter = BloomFilter(100,5) 
    # apply some method to instance... 
    bloomfilter.rand_inserts(15) 
1

你會想要把主()在類的外部:

class BloomFilter(object): 
    def __init__(self, numBits, numHashFunctions): 
     self.numBits = numBits 
     self.bitArray = [0] * numBits 
     self.hash = bloomFilterHash(numBits, numHashFunctions) 

    def insert(self, key): 

    def lookup(self, key): 

    def rand_inserts(self,num): 



def main(): 
    some_value = Bloomfilter(100, 5) 

    some_value.rand_inserts(15) 

main()