-1

以下不是我的代码,而是我必须使用的代码......

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

我有一个名为“媒体”的电影类型的对象,我可以使用它的名称和年份属性并执行所有标准操作。我也知道在“源”中存储了一个我非常想访问的值,但是每当我尝试它时,它都会因以下错误而炸毁我:

  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__'

这个属性是永远遥不可及吗?

4

2 回答 2

0

您的 MediaRoot 对象不是对象的子类,因此没有__getattr__Python 对象通常具有的方法。尝试这个:

class MediaRoot(object):

于 2015-01-21T04:55:12.680 回答
0

你有...:

class MediaRoot:

在 Python 2 中,除非您__metaclass__ = type在全局级别拥有,否则这是一个旧式类(没有人应该再使用它了!)——它需要

class MediaRoot(object):

如果如您所说,您无法修复此错误,我认为没有补救措施。

回溯中实际显示的代码agentkit.py也有问题,但是MediaRoot作为旧式类是您的第一个问题。

于 2015-01-21T04:55:28.450 回答