Найти - Пользователи
Полная версия: Статические методы.
Начало » Python для новичков » Статические методы.
1 2
izekia
4kpt_IV
FishHook
да, видимо я был неправ, classmethod ближе к обычному статическому методу из ООП за счет неявно передаваемого ему параметра
FishHook
izekia
Тут все несколько сложнее, если разобраться как классметоды устроены. Дело в том, что это вообще не методы, а объекты-дескрипторы.
izekia
FishHook
да,я пока не проникся питоновским ООП с тех пор как вернулся с джаваскрипта, хотя надо сказать и раньше не был его фанатом) … мне иногда проще выразить состояние через замыкание. Буду больше сталкиваться с этим - придет понимание как это может быть задействовано и в чем преимущество.
4kpt_IV
Каноничнее питонячего ООП только у смалталка. Все остальное далеко от идеала. Ну а жаба это вообще костыль на костыле. Жуткая штука. Хотя каждому свое…
izekia
4kpt_IV
да отвык я немного от ооп, а применять его больше всего на шарпе пришлось
но я догоню)
py.user.next
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
>>>
FishHook
При этом у экземпляра одноименный член можно перегрузить
 class Foo(object):
    @classmethod
    def foo(cls):
        return 1
    def __init__(self):
        self.foo = lambda: 2
print Foo.foo()
print Foo().foo()
в этом плане ни методы, ни классметоды ничем не отличаются от членов-переменных.
izekia
добрый фишхук, даже как-то странно)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB