На главную страницу | Новости | Ссылки | Контакты
Реализация объекно-ориентированного подхода в языке Python. Создание собственных классов
Пример простейших классов и реализация наследования в Python:
#code: Классы и наследование
class A1:
def __init__(self, x):
self.x = x
print('A1:init')
def foo(self):
print('A1:foo')
print(self.x)
class A2:
def __init__(self, x):
self.x = x
print('A2:init')
def foo(self):
print('A2:foo')
print(self.x)
class B(A1, A2):
foo = A2.foo # explicit inheritance
def __init__(self, x):
self.x = x
#A1.__init__(self, 2)
#A2.__init__(self, 3)
print('B:init')
ob = B(1)
ob.foo()
Вывод
Здесь дочерний класс
Если из класса
Аналогично, когда мы вызываем функцию
Экземпляры класса можно использовать вместо функций. Для этого достаточно перегрузить оператор __call__.
class A:
def __call__(self, *pargs, **kargs):
print('called: ', pargs, kargs)
a = A()
a(1, 2, 3, x=4, y=5)
out:
called: (1, 2, 3) {'x': 4, 'y': 5}
Здесь pargs - кортеж, в который будую занесены обычне аргументы (без указания имени аргумента). А kargs - словарь, в который заносятся именованные аргументы.