Уведомления

Группа в Telegram: @pythonsu

#1 Май 16, 2017 16:52:22

Ronax
Зарегистрирован: 2017-05-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Объекты.

Что такое встроенный метод?
Что такое специальный метод?

Офлайн

#2 Май 16, 2017 17:25:26

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Объекты.

Ronax
Что такое встроенный метод?

Если ты про встроенные функции, то ответ такой: всё, что в питоновском модуле builtins найдёшь - всё встроено в интерпретатор

Примеры здесь https://pythonworld.ru/osnovy/vstroennye-funkcii.html можно посмотреть

Ronax
Что такое специальный метод?

набирай в оболочке
  for x n dir(<любой объект>): print(x)
все методы вида __<название>__ являются специальными (по два подчеркивания с обеих сторон)

чтение книг - в помощь

Офлайн

#3 Май 17, 2017 07:11:51

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Объекты.

Пример для понимания специальных методов.

пишу код:

 class A:
    def myMethod(self):
        print('from class A')
class B:
    def __call__(self, *args, **kwargs):
        print('from class B')
# test
if __name__ == '__main__':
    a = A()
    b = B()
    a.myMethod()
    b()
        
    a()

получаю результат:

 ================ RESTART: Dweb.py/xp/example_spec_method.py ================
from class A
from class B
Traceback (most recent call last):
  File "D:/web.py/xp/example_spec_method.py", line 17, in <module>
    a()
TypeError: 'A' object is not callable
>>>


Специальный метод __call__(self) сделал возможным вызывать экземпляр класса с параметрами как функцию

Офлайн

#4 Май 17, 2017 09:20:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Объекты.

только a экземпляр не того класса где вы call определили



Отредактировано doza_and (Май 17, 2017 09:20:58)

Офлайн

#5 Май 17, 2017 10:04:27

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Объекты.

ну дык все правильно, b() выдал “from class B” потому что в нем метод __call__ обьявлен, а a() выдал TypeError потому что там он не обьявлен.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#6 Май 17, 2017 11:59:20

alexgreg
Зарегистрирован: 2017-05-15
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Объекты.

PEHDOM
ну дык все правильно, b() выдал “from class B” потому что в нем метод __call__ обьявлен, а a() выдал TypeError потому что там он не обьявлен.

внимательность - лучший друг программиста

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version