Как я могу получить доступ к значениям, хранящимся в родительском классе / объекте (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):