Advanced Patterns

Preview — 3 of 10 questions

What is the output of the following code?

javascript
class A:
    def greet(self):
        return "A"

class B(A):
    def greet(self):
        return "B->" + super().greet()

class C(A):
    def greet(self):
        return "C->" + super().greet()

class D(B, C):
    def greet(self):
        return "D->" + super().greet()

print(D().greet())
AD->C->B->A
BD->B->C->A
CD->B->A->C->A
DD->B->A

What is the output of the following code?

javascript
class Meta(type):
    def __new__(mcs, name, bases, namespace):
        namespace['created_by'] = 'Meta'
        return super().__new__(mcs, name, bases, namespace)

class MyClass(metaclass=Meta):
    pass

print(MyClass.created_by)
print(type(MyClass))
print(type(Meta))
AMeta, <class '__main__.Meta'>, <class 'type'>
BMeta, <class 'type'>, <class 'type'>
CMeta, <class '__main__.Meta'>, <class '__main__.Meta'>
DAttributeError

What is the output of the following code?

javascript
class Celsius:
    def __init__(self, value=0):
        self._value = value

    def __get__(self, instance, owner):
        return self._value

    def __set__(self, instance, value):
        if value < -273.15:
            raise ValueError("Below absolute zero")
        self._value = value

class Weather:
    temperature = Celsius()

w1 = Weather()
w2 = Weather()
w1.temperature = 25
w2.temperature = 30
print(w1.temperature)
A0
B25
CAttributeError
D30

Sign up free to play

Answer all 10 questions (7 more), see explanations for every answer, and track your score.