def a(self):
                  
                  
                      print ("A work")
                  
                  
                      return self
                  
                  
                  
                  
                  
                  @a
                  
                  
                  def b():
                  
                  
                      print ("B work")
                  
                  
                  
                  
                  
                  if name== "main":
                  
                  
                      b()
                  
                  
                      print("-"*10)
                  
                  
                      a(lambda x :b())
                  
                  
                
Декоратор возвращает функцию, но вызывать её некому. Дополнительная пара скобок в конце — вызовет.
И да, называть self что-либо кроме первого параметра методов — не принято.
Traceback (most recent call last): File "c:\Users\Юзер\Documents\python\test.py", line 12, in <module> a(lambda x :b())() TypeError: <lambda>() missing 1 required positional argument: 'x'
А, ну да, ты ж сделал лямбду, у неё параметр. Без параметра не запустишь.
c = a(b)() вот так просто
Да, именно.
Обсуждают сегодня