2013-02-23 2 views
-2

У кого-нибудь есть идеи о том, как реализовать метод lazy() на любых языках? В пример Python коды может выглядеть следующим образом:Оценка игрока по ленивым оценкам OOP?

class A: 
    def __init__(self): 
     self.result = "" 
     pass 
    def invoke(self): 
     print("invoke A") 
     self.result = "RESULT" 
    def lazy(self): 
     # I'm not sure how to write this 

class B: 
    def __init__(self, input): 
     self.input = input 
    def invoke(self): 
     print("invoke B: ", self.input) 


a = A() 
b = B(a.lazy().result)   # b needs a reference to the result of `a` before `a` is invoked 

a.invoke()      # invoke A 
b.invoke()      # invoke B: RESULT 

Подробнее можно посмотреть here ...

Ответ: Я не думаю, что это плохой вопрос, хотя кто-то думает, что это:

я получил ответы, как это:

class Dynamic: 
    def __init__(self, obj, attr): 
     self._obj = obj 
     self._attr = attr 
    def __str__(self): 
     return getattr(self._obj, self._attr) 

class A: 
    def __init__(self): 
     pass 
    def invoke(self): 
     print("invoke A") 
     self.result = "RESULT" 

class B: 
    def __init__(self, input): 
     self.input = input 
    def invoke(self): 
     print("invoke B: ", self.input) 


a = A() 
b = B(Dynamic(a, "result")) 

a.invoke()      # invoke A 
b.invoke()      # invoke B: RESULT 
+0

Что такое ленивый() метод? –

+1

Почему вы отметили это с помощью java, C++ или lisp? Кроме того, что означает «ленивый» для вас в этом контексте? Я действительно не знаю, о чем вы просите. –

+0

@PrincessOftheUniverse Я не думаю, что это плохой вопрос –

ответ

1

Не уверен, если я вас правильно ... что-то вроде этого?

class A: 
    def __init__(self): 
     self.result = "" 
    def invoke(self): 
     print("invoke A") 
     self.result = "RESULT" 
    def lazy(self): 
     return self.result 

class B: 
    def __init__(self, input): 
     self.input = input 
    def invoke(self): 
     print("invoke B: ", self.input()) 


a = A() 
b = B(a.lazy)     # b needs a reference to the result of `a` before `a` is invoked 

a.invoke()      # invoke A 
b.invoke()      # invoke B: RESULT 
+0

Да, что-то вроде этого, кроме 'self.input', поскольку он должен использоваться как переменная вместо функции. –

Смежные вопросы