2017-02-20 61 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()