以下不是我的代码,而是我必须使用的代码...
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__'
这个属性是永远遥不可及的吗?
您的 MediaRoot 对象不是从对象子类化的,因此没有像 Python 对象通常那样具有__getattr__
方法。 试试这个:
class MediaRoot(object):
你有...:
class MediaRoot:
在 Python 2 中,除非你有全局级别的__metaclass__ = type
,否则这是一个旧式的类(没有人应该再使用它了!)——它需要
class MediaRoot(object):
如果,正如你所说,你无法修复这个错误,我认为没有补救措施。
回溯中实际显示的agentkit.py
中的代码也有问题,但MediaRoot
是旧式类是第一个问题。