Предизвикателства > Haunted mansion > Решения > Решението на Стивън Александров

Резултати
1 точки от тестове
0 точки от учител

1 точки общо

1 успешни теста
0 неуспешни теста
Код
Скрий всички коментари

 1spooky_constant = "spooky_"
 2
 3def contains_spooky(string):
 4    if(len(string) < len(spooky_constant)):
 5        return False
 6    for i in range(len(spooky_constant)):
 7        if string[i] != spooky_constant[i]:
 8            return False
 9    return True
10
11def is_dunder(name):
12    if(len(name) < 2):
13        return False
14    return name[0] == "_" and name[1] == "_"
15#разбрах, че трябват 2 реда между дефинициите на различни класове, но не съм сигурен в този случай Функция -> Клас
16#Колко празни реда да оставя, затова нека запълним 2 реда с коментар
17class HauntedMansion:
18    def __init__(self,**kwargs):
19        for key, value in kwargs.items():
20            object.__setattr__(self, key, value)
21
22    def __setattr__(self, name, value):
23        object.__setattr__(self,name,value)
24
25    def __getattribute__(self, name):
26        try:
27            if is_dunder(name):
28                return object.__getattribute__(self, name)
29            if contains_spooky(name):
30                name = name[len(spooky_constant):] # slicing, махаме spooky_ частта
31                return object.__getattribute__(self, name)
32            else:
33                return "Booooo, only ghosts here!"
34        except:
35            return "Booooo, only ghosts here!" # ако нещо некъде е хвърлило грешка, примерно AttributeError

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

Дискусия
История
Това решение има само една версия.