@Danil38
Python разработчик

Для чего в Python статические методы?

Для чего в Python статические методы, и как реализовать статические атрибуты???
Конкретно нужно чтобы были созданы 2 экземпляра класса в которых была бы общая переменная т.е. изменив значение атрибута в одном экземпляре в другом оно бы тоже поменялось...?
с1 = С()
с2 = С()
print c1.atrib, с2.atrib
c1.atrib = 5
print c1.atrib, с2.atrib

вывод должен быть таким:
0 0
5 5
  • Вопрос задан
  • 8243 просмотра
Пригласить эксперта
Ответы на вопрос 5
@GiperScriper
class C(object):
    atrib = 0

c1 = C()
c2 = C()
print c1.atrib, c2.atrib # 0 0
C.atrib = 5
print c1.atrib, c2.atrib # 5 5
Ответ написан
Lerg
@Lerg
Defold, Corona, Lua, GameDev
class Foo:
    some = 0
    @classmethod
    def setSome(cls, val):
        cls.some = val
        
    @classmethod
    def getSome(cls):
        return cls.some
        
        
f1 = Foo()
f2 = Foo()

print(f1.getSome(), f2.getSome())
f1.setSome(5)
print(f1.getSome(), f2.getSome())
Ответ написан
MrBoriska
@MrBoriska
Пэхэпист самоучка, Питоност по Лутцу. C++
С помощью декоратора @classmethod

Нужно определить метод класса с помощью этого декоратора при описании класса.

class Foo:
    @classmethod
    def method(cls,arg):
        print(cls) #Объект класса, а не экземпляра класса.
Ответ написан
Комментировать
@Derfirm
Noname Developer.
Как на счёт свойств?
class Class(object):
    def some_value():
        doc = "The some_value property."
        def fget(self):
            return self._some_value
        def fset(self, value):
            self._some_value = value
        def fdel(self):
            del self._some_value
        return locals()
    some_value = property(**some_value())


Class.some_value = 5
first = Class()
second = Class()

print Class.some_value
print first.some_value
print second.some_value
Ответ написан
Комментировать
@lega
Вам нужен "синглтон", вот 3 примера.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы