Быстрый в изучении - мощный в программировании
Скрипт ИНВЕСТОР на Python

Попробуйте себя в качестве инвестора имея в помощники мощный алгоритм советника на Python...

Все уроки по PyQt5

PyQt5 реализован как комплект Python-модулей. Он включает в себя около 620 классов и 6000 функций и методов...

Скрипт отправки SMS через Python

Была задача отправить SMS-ки большому списку номеров телефона с уточнением цены за всю рассылку "До" ее отправки...

Классы нового стиля. ООП в Python

Классы нового стиля

Начиная с Python 2.2, помимо классических классов существует классы так называемого нового стиля. Классом нового стиля называется класс, у которого базовым классом является встроенный объект (например, list или dict) или объект object. Для классов старого и нового стили отличаются результатом выполнения функции type(), а также вывод атрибутов __class__ и __bases__ для экземпляров классов.

Классы нового стиля

class Class1:          # Классический класс
    pass
 
class Class2(object):  # Класс нового стиля
    pass
 
class Class3(list):    # Класс нового стиля
    pass
 
print type(Class1)     # Выведет: 
print type(Class2)     # Выведет: 
print type(Class3)     # Выведет: 
# __bases__ содержит кортеж с базовыми классами
 
print Class1.__bases__ # Выведет: ()
print Class2.__bases__ # Выведет: (,)
print Class3.__bases__ # Выведет: (,)
c1, c2, c3 = Class1(), Class2(), Class3()
 
print c1.__class__     # Выведет: __main__.Class1
print c2.__class__     # Выведет: 
print c3.__class__     # Выведет: 
print type(c1)         # Выведет: 
print type(c2)         # Выведет: 
print type(c3)         # Выведет: 

Кроме того, в классах нового стиля другой порядок поиска идентификаторов при множественном наследовании. Рассмотрим это на примере.

Поиск идентификаторов при множественном наследовании

class Class1(object):  # Класс нового стиля
#class Class1:         # Классический класс
    var1 = "Это значение в классических классах"
 
class Class2(Class1): pass
class Class3(Class2): pass
class Class4(Class3): pass
 
class Class5(Class2):
    var1 = "Это значение в классах нового стиля"
 
class Class6(Class5): pass
class Class7(Class4, Class6): pass
c1 = Class7()
print c1.var1

Если используется классические классы, то атрибут var1 будет найден в классе Class1, т.к. просматривается вся ветка наследования для класса Class4. Если используется классы нового стиля, то атрибут var1 будет найден в классе Class5, т.к. при достижения класса Class2 поиск будет производиться в ветке класса Class6, стоящего в списке наследования вторым. Класс Class2 для классов Class4 и Class6 является общим предком.

Все автолюбители знают, что хорошие запчасти могут быть только в стране где производится автомобиль а все остальное либо подделка или б/у. Интернет магазин автозапчастей Украина может помочь вам в выборе недостающей части чтобы выполнить полноценный ремонт автомобиля. Все запчасти качественные и импортированы за границей. Можно так же, заказать доставку индивидуальных запчастей.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru yandex.ru
Оставьте комментарий!

Используйте нормальные имена.

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)