2015-08-10 7 views
0

Я хочу, чтобы определенная функция вызывалась в классе. Нечто похожее на:Возвращаемое значение, когда экземпляр «называется»

class foo(): 
    def __init__(self): 
     self.img = pygame.Surface((20, 20)) 
    def magicfunction(self): 
     return self.img 

bar = foo() 

screen = pygame.display.set_mode((200, 200)) 
screen.blit(bar) 

Какую магическую функцию я должен использовать?

+0

Вы просите объект притвориться другой объект, когда он ссылается? – muddyfish

+0

Это невозможно, если вы не имеете в виду 'bar()', который вызывает '__call__'. См. [Документы] (https://docs.python.org/2/reference/datamodel.html). – jonrsharpe

+0

@muddyfish точно – Pixdigit

ответ

0

Если вы правильно поняли, вы хотите создать свой собственный класс, который также является поверхностью. Это похоже на наследование! Попробуйте сделать foo чадом pygame.Surface:

class foo(pygame.Surface): 
    def __init__(self): 
     pygame.Surface.__init__(self, (20, 20)) 
     more_data = "You should be able to extend this class freely"