如何访问存储在父类/对象(python)中的值?

时间:2015-01-21 04:50:38

标签: python plex

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

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,我可以使用其名称和年份属性,并执行所有标准操作。我也知道有一个值存储在" source"我非常想访问,但每当我尝试它时,它会因为以下错误而爆炸:

  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 个答案:

答案 0 :(得分:0)

您的MediaRoot对象不是来自对象的子类,因此没有像Python对象那样的__getattr__方法。试试这个:

class MediaRoot(object):

答案 1 :(得分:0)

你有......:

class MediaRoot:

在Python 2中,除非你在全局级别__metaclass__ = type,否则这是一个旧式类(任何人都不应该再使用它了!) - 它需要 p>

class MediaRoot(object):

如果按照您的说法,您无法解决此错误,我认为这不是一种补救措施。

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