Девета задача

  1. Тема за въпроси свързани с девета задача.

    Публикувано преди
  2. Готина задачка :) и срокът е по-дълъг този път! А какво става с по-големите проекти? Няма ли да е по-добре да имаме по-голяма прозрачност и по-този въпрос за по-добро разпределяне на задачите в рамките на цялата сесия ;) Поздрави, Никола!

    Публикувано преди
  3. @Евгени, теста test_several_multimethods не би ли трябвало да хвърля изключение, тъй като от задача 6: "Всички методи трябва да имат едно и също име. В противен случай пораждайте NameError"

    Публикувано преди
  4. В задача 6 мисля,че се има предивид,че всички методи,които декорираме с @collide.multimethod трябва да са с име collide Т.е. може да имаме @multimethod

    def collide(self, a: Spaceship, b: Spaceship):
        print("Two spaceships")
    
    @collide.multimethod
    def collide(self, a: Spaceship, b: Asteroid):
        print("A spaceship and an asteroid")
    

    @multimethod

    def collide2(self, a: Spaceship, b: Spaceship):
        print("Two spaceships")
    
    @collide2.multimethod
    def collide(self, a: Spaceship, b: Asteroid):
        print("A spaceship and an asteroid")
    

    но не и @multimethod

    def collide(self, a: Spaceship, b: Spaceship):
        print("Two spaceships")
    
    @collide.multimethod
    def collide2(self, a: Spaceship, b: Asteroid):
        print("A spaceship and an asteroid")
    

    Поне аз така го разбирам условието,а и по принцип, е напълно нормално в един клас да има няколко мултиметода с различни имена В този ред на мисли тестовете на Евгени са си ок.

    Публикувано преди
  5. А очаква ли се имплементацията да работи и за методи, добавени към класа извън неговото тяло? Например:

    
    class A:
        def x(self, a:int):
            print("int")
    
    def x(self, a:str):
        print("string")
    
    A.x = x
    a = A()
    a.x(3) #int
    a.x("edno")#string
    
    Публикувано преди
  6. Добър въпрос, мислех да питам същия. Подкрепям запитването (:

    Публикувано преди
  7. Евгени мисля, че на 61-ви ред raises.m('This parrot is dead') не се очаква LookupError. Защото в случая няма multi dispatch.

    Публикувано преди
  8. И при мен в началото нямаше, ама май от условието не става ясно дали не би трябвало и в този случай да има. Хм, май е малко късно, но дали организаторите на курса могат да се включат с разяснение - ако има само един метод с определено име и той има параметри, анотирани с валидни Python-ски типове, предполага ли се да го третираме като multidispatch?

    А ето и малко тестове от мен за нещо, което тези на Евгени не покриват - named arguments :) http://paste.debian.net/120770/

    Публикувано преди
  9. До колкото видях официалния тест на 6-та задача, да, дори и да има само една версия на метода, трябва да се проверяват анотациите.

    Публикувано преди

Трябва да сте влезли в системата, за да може да отговаряте на теми.