2016-03-22 13 views
0

Bir basma yöntemine sahip olacak bir düğme sınıfı oluşturmaya çalışıyorum, ancak nesne oluşturulduğunda, nesne oluşturulurken geçirdiğim işlev hemen döndürülüyor. Fonksiyonları cisimlere aktarmak ve sonuçları daha sonra çağrılmak üzere saklamak mümkün mü?İşlev bir nesneyle nasıl iletilir ve saklanır, daha sonra bir yöntemle çağrılacak?

class Button: 
    def __init__(self, function): 
     self.function = function 

    def press(self): 
     return self.function 


def func(): 
    print("results") 

button1 = Button(func()) 
#results is printed here 
button1.press() 
#I want results to be printed here 
+1

Kısaca ile press() bunu aramak zorunda: demiyoruz . – TigerhawkT3

+0

“button1 = Button (func())' ile ilettiğinizde diyorsunuz. Oraya arama. Aslında, 'button1.function' ifadesi 'func' işlevinden ziyade '' results '' dizesine başvurur. – TigerhawkT3

+0

well 'button1.function', sadece – Bahrom

cevap

0

Bir işlevinde geçmek istiyorum, o değil fonksiyonunun çıkışı böylece Button(func) gerekir. Ancak press içinde, onu aramak istiyorum: return self.function()

+1

yazdırdığı için bu durumda' None'a atıfta bulunuyor. Hızlı bir şekilde psuedocode yazdım, bu yüzden basında yazım hatası kaçırmış olmalıyım. Ancak hızlı düzeltme için teşekkürler. Cevabınızı kabul ediyorum ama yeterince 'itibar' lol'um yok. –

+0

Merak etme, iyi şanslar :) – Bahrom

0

Daha sonra, fonksiyon func değil işlevi func() sonucu geçmesi function()

class Button: 
    def __init__(self, function): 
     self.function = function 

    def press(self): 
     return self.function() 


def func(): 
    print("results") 

button1 = Button(func) 
#results is NOT printed here 

button1.press() 
#results is printed here 
İlgili konular