2012-01-11 21 views
5

Bir sınıfla çalışıyorum ve sınıfın içinden bir yardımcı yöntemini çağırmaya çalışıyorum. Çalışmak için aşağıdaki kodu aldım, ama yöntemde bir argüman olarak zaten "kendimi" bulduğumda, yardımcı işlevine bir argüman olarak neden "kendimi" geçmem gerektiğinden emin değilim. Aşağıdaki örnekte Frequency .__ helper (self, record) olarak adlandırdığım zaman bunu argüman olarak iletmem için bir neden var mı?Bir yardımcı yöntemde kendini bağımsız değişken olarak geçirme

Teşekkürler!

class Frequency: 

    def __init__(self, record): 
     self.record = record 

    def __helper(self, datalist) 
     do something to datalist... 

    def getFreq(self): 
     allrec = self.record 
     record = allrec[1].split(' ') 
     var = Frequency.__helper(self, record) 
     return var 

cevap

2

yöntemi çağırmak için doğru yolu sadece aynı şeyi yapar, ama daha sezgisel bir biçimde

var = self.__helper(record) 

olduğunu.

2

Evet, bu durumda yapmanız gerekir, çünkü işlevi bir @staticmethod olarak bildirmiyorsunuz. Bir yöntem statik olmadığında, iletilmesi gereken bir örnek gerektirir.

gibi bir şey yaparsanız:

class Frequency: 
    @staticmethod 
    def test(datalist): 
     pass 

Eğer argüman listesine kendini tanımlamak için gerekli olacak değil.