Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: ООП в Python  (Прочитано 750 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Xyanight

  • Автор темы
  • Забанен
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
ООП в Python
« : 17 Октября 2015, 06:41:06 »
Подскажите, каким образом я могу изменить атрибут attr касса А в классе В?
class A(object):
    def __init__(self):
        self.attr = None

class B(A):
    def __init__(self):
        A.attr = True
Результат:
>>> a = A()
>>> b = B()
>>> print a.attr
>>> None
Это просто какой-то Python!

Оффлайн SkinnyJack

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: ООП в Python
« Ответ #1 : 17 Октября 2015, 13:33:32 »
Жесть. Я просто не знаю даже с чего начать. Вот так, наверное.

Оффлайн maza51

  • Любитель
  • *
  • Сообщений: 79
    • Просмотр профиля
Re: ООП в Python
« Ответ #2 : 17 Октября 2015, 15:09:51 »
Посмотри декораторы

Оффлайн Xyanight

  • Автор темы
  • Забанен
  • Участник
  • *
  • Сообщений: 147
  • Это просто какой-то Python!
    • Просмотр профиля
Re: ООП в Python
« Ответ #3 : 17 Октября 2015, 21:41:28 »
Жесть. Я просто не знаю даже с чего начать. Вот так, наверное.
Спасибо за ответ. Но если вы даже не знаете, с чего начать, зачем предлагать в качестве ответов ссылки, которые не имеют к моему вопросу ни малейшего отношения!?
Или вы думаете, что я совсем дурак и не понимаю, к примеру, азы ООП?
class A(object):
    def  func(self):
          return False

class B(A):
    def __init__(self):
        A.func = self.func


    def  func(self):
          return True
Результат:
>>> a = A()
>>> b = B()
>>> print a.func
>>> True
А теперь по теме можно ответить или так и будем строить из себя умников?
Это просто какой-то Python!

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: ООП в Python
« Ответ #4 : 17 Октября 2015, 21:58:18 »
Думаю, дело вот в чем. Значение аттрибута объекта a записывается при его создании и при изменении этого атрибута в классе А оно не обновляется. С функцией же это работает, поскольку то, что она возвращает, расчитывается уже при запуске самой функции, но не при создании объекта.
(Вы, кстати, скобочки забыли при ее вызове)

Пользователь решил продолжить мысль 17 Октября 2015, 22:02:39:
http://stackoverflow.com/questions/5849113/how-can-i-use-pythons-super-to-update-a-parent-value
« Последнее редактирование: 17 Октября 2015, 22:02:39 от Phlya »
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн SkinnyJack

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: ООП в Python
« Ответ #5 : 17 Октября 2015, 23:29:18 »

Спасибо за ответ. Но если вы даже не знаете, с чего начать, зачем предлагать в качестве ответов ссылки, которые не имеют к моему вопросу ни малейшего отношения!?
Или вы думаете, что я совсем дурак и не понимаю, к примеру, азы ООП?
А теперь по теме можно ответить или так и будем строить из себя умников?
У вас всё хорошо? Может некоторое время занять себя чем-нибудь другим?
Цитата: ссылки, которые не имеют к моему вопросу ни малейшего отношения
Может быть вам легче будет понять, если вы будете думать о классе как о наборе функций, а об объекте как о наборе данных.

Код: (python) [Выделить]
class A:
  attr = None

class B(A):
  def __init__(self):
    A.attr = True

a=A()
print a.attr # "None"
b=B()
print a.attr #"True"



« Последнее редактирование: 17 Октября 2015, 23:43:57 от SkinnyJack »

Оффлайн Grigory Smirnov

  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: ООП в Python
« Ответ #6 : 22 Октября 2015, 17:10:19 »

 

Страница сгенерирована за 0.075 секунд. Запросов: 25.