Как я могу получить доступ к значениям, хранящимся в родительском классе / объекте (python)?

Ниже приведен не мой код, а код, с которым я должен работать...

class MediaRoot:
  def __init__(self, type):
    self.name = ''
    self.year = None
    self.type = type
    self.parts = []
    self.subtitles = []
    self.thumbs = []
    self.arts = []
    self.trailers = []
    self.released_at = None
    self.display_offset = 0
    self.source = None
    self.themes = []

class Movie(MediaRoot):
  def __init__(self, name, year=None):
    MediaRoot.__init__(self,'Movie')
    self.name = name
    self.year = year
    self.guid = None

У меня есть объект с именем "media" типа Movie, и я могу работать с его именем и атрибутами года и выполнять все стандартные манипуляции. Я также знаю, что в "источнике" хранится значение, к которому я очень хотел бы получить доступ, но всякий раз, когда я пытаюсь его использовать, оно вызывает у меня следующую ошибку:

  File "/Users/john/Library/Application Support/Plex Media Server/Plug-ins/Framework.bundle/Contents/Resources/Versions/2/Python/Framework/api/agentkit.py", line 626, in __getattr__
    return object.__getattr__(self, name)
AttributeError: type object 'object' has no attribute '__getattr__'

Этот атрибут просто навсегда недоступен?

2 ответа

У тебя есть...:

class MediaRoot:

в Python 2, если у вас нет __metaclass__ = type на глобальном уровне это класс старого стиля (который никто больше не должен использовать!) - он должен быть

class MediaRoot(object):

Если, как вы говорите, вы не можете исправить эту ошибку, я не думаю, что есть решение.

Код в agentkit.py на самом деле показанный в вашей трассировке тоже проблематично, но MediaRoot быть старым классом - твоя первая проблема.

Ваш объект MediaRoot не разделен на подклассы от объекта и, следовательно, не имеет __getattr__ метод, как обычно делают объекты Python. Попробуй это:

class MediaRoot(object):

Другие вопросы по тегам