Какие типы полиморфизма есть в Python? Спросят с вероятностью 3%
Полиморфизм — это способность функции, метода или объекта работать с разными типами данных. В Python это включает:
1️⃣ Полиморфизм подтипов (наследование)
2️⃣ Полиморфизм перегрузки (параметрический полиморфизм)
3️⃣ Полиморфизм утиной типизации (по интерфейсу)
### Полиморфизм подтипов (наследование)
Этот тип позволяет использовать объект любого класса, который является подклассом базового класса. Это достигается с помощью наследования. Метод, определенный в базовом классе, может быть переопределен в подклассах.
Python | Вопросы с собеседований
Полиморфизм — это способность функции, метода или объекта работать с разными типами данных. В Python это включает:
1️⃣ Полиморфизм подтипов (наследование)
2️⃣ Полиморфизм перегрузки (параметрический полиморфизм)
3️⃣ Полиморфизм утиной типизации (по интерфейсу)
### Полиморфизм подтипов (наследование)
Этот тип позволяет использовать объект любого класса, который является подклассом базового класса. Это достигается с помощью наследования. Метод, определенный в базовом классе, может быть переопределен в подклассах.
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Bark"
class Cat(Animal):
def make_sound(self):
return "Meow"
def make_animal_sound(animal):
print(animal.make_sound())
Python | Вопросы с собеседований
Как в классах хранятся атрибуты и методы?
Спросят с вероятностью 3%
Атрибуты и методы в классах хранятся в специальном словаре под названием
Атрибуты и методы экземпляра
Когда создаешь объект класса, для него создается свой собственный словарь атрибутов, где хранятся все данные, относящиеся к этому объекту.
Пример:
Атрибуты и методы класса
Они хранятся в словаре сdictбут
Пример:
Динамическое добавление атрибутов и методов
Атрибуты и методы можно добавлять на dictпляра:
Пример для класса:
В общем, атрибуты и методы экземпляра хранятся в
Python | Вопросы с собеседований
Спросят с вероятностью 3%
Атрибуты и методы в классах хранятся в специальном словаре под названием
__dict__
. Этот словарь содержит все данные и функции экземпляра или класса.Атрибуты и методы экземпляра
Когда создаешь объект класса, для него создается свой собственный словарь атрибутов, где хранятся все данные, относящиеся к этому объекту.
Пример:
class MyClass:
class_attr = 42
def __init__(self, value):
self.instance_attr = value
def instance_method(self):
return f"Instance attribute: {self.instance_attr}"
@classmethod
def class_method(cls):
return f"Class attribute: {cls.class_attr}"
# Создание экземпляра класса
obj = MyClass(10)
# Доступ к словарю атрибутов экземпляра
print(obj.__dict__) # {'instance_attr': 10}
# Доступ к атрибуту экземпляра
print(obj.instance_attr) # 10
# Вызов метода экземпляра
print(obj.instance_method()) # Instance attribute: 10
Атрибуты и методы класса
Они хранятся в словаре сdictбут
__dict__
.Пример:
# Доступ к словарю атрибутов класса
print(MyClass.__dict__)
# Что-то вроде этого:
# {
# '__module__': '__main__',
# 'class_attr': 42,
# '__init__': <function MyClass.__init__ at 0x...>,
# 'instance_method': <function MyClass.instance_method at 0x...>,
# 'class_method': <classmethod object at 0x...>,
# '__dict__': <attribute '__dict__' of 'MyClass' objects>,
# '__weakref__': <attribute '__weakref__' of 'MyClass' objects>,
# '__doc__': None
# }
# Доступ к атрибуту класса
print(MyClass.class_attr) # 42
# Вызов метода класса
print(MyClass.class_method()) # Class attribute: 42
Динамическое добавление атрибутов и методов
Атрибуты и методы можно добавлять на dictпляра:
obj.new_attr = "I am new!"
print(obj.__dict__) # {'instance_attr': 10, 'new_attr': 'I am new!'}
print(obj.new_attr) # I am new!
Пример для класса:
def new_class_method(cls):
return "This is a new class method"
MyClass.new_class_method = classmethod(new_class_method)
print(MyClass.new_class_method()) # This is a new class method
В общем, атрибуты и методы экземпляра хранятся в
__dict__
этого экземпляра, а атрибуты и методы класса — в __dict__
самого класса. Эти словари позволяют динамически добавлять и изменять атрибуты и методы.Python | Вопросы с собеседований