2017-02-20 26 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() не специальный метод для класса питона, поэтому я считаю, что вы цель здесь это (упрощенный):

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()