Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2016 08:40:14

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Статические методы.

4kpt_IV
FishHook
да, видимо я был неправ, classmethod ближе к обычному статическому методу из ООП за счет неявно передаваемого ему параметра



Офлайн

#2 Ноя. 15, 2016 08:46:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Статические методы.

izekia
Тут все несколько сложнее, если разобраться как классметоды устроены. Дело в том, что это вообще не методы, а объекты-дескрипторы.



Офлайн

#3 Ноя. 15, 2016 08:57:13

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Статические методы.

FishHook
да,я пока не проникся питоновским ООП с тех пор как вернулся с джаваскрипта, хотя надо сказать и раньше не был его фанатом) … мне иногда проще выразить состояние через замыкание. Буду больше сталкиваться с этим - придет понимание как это может быть задействовано и в чем преимущество.



Офлайн

#4 Ноя. 15, 2016 09:58:20

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Статические методы.

Каноничнее питонячего ООП только у смалталка. Все остальное далеко от идеала. Ну а жаба это вообще костыль на костыле. Жуткая штука. Хотя каждому свое…

Офлайн

#5 Ноя. 15, 2016 10:27:36

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Статические методы.

4kpt_IV
да отвык я немного от ооп, а применять его больше всего на шарпе пришлось
но я догоню)



Офлайн

#6 Ноя. 15, 2016 12:04:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Статические методы.

ilnaz
Можете объяснить назначение статических методов
Обычно методы класса работают с экземпляром этого класса. Когда создаётся экземпляр класса, у него есть методы, которые с ним же и работают (хранят что-то в нём или читают что-то из него). А статические методы класса - это методы которым не нужен экземпляр класса. Он может быть вызван как у класса напрямую (без создания экземпляра), так и у экземпляра без его использования. При этом в экземпляре он только хранится, но не работает с ним.

  
>>> class A:
...     
...     x = 1
...     
...     def getx(self):
...         return self.x
...     
...     @staticmethod
...     def sum(a, b):
...         return a + b
... 
>>> a = A()
>>> 
>>> a.getx()
1
>>> 
>>> A.sum(2, 3)
5
>>> a.sum(3, 4)
7
>>>



Отредактировано py.user.next (Ноя. 15, 2016 12:06:07)

Офлайн

#7 Ноя. 15, 2016 12:19:55

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Статические методы.

При этом у экземпляра одноименный член можно перегрузить

 class Foo(object):
    @classmethod
    def foo(cls):
        return 1
    def __init__(self):
        self.foo = lambda: 2
print Foo.foo()
print Foo().foo()
в этом плане ни методы, ни классметоды ничем не отличаются от членов-переменных.



Офлайн

#8 Ноя. 15, 2016 13:58:04

izekia
От:
Зарегистрирован: 2008-07-19
Сообщения: 317
Репутация: +  12  -
Профиль   Отправить e-mail  

Статические методы.

добрый фишхук, даже как-то странно)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version