2015-01-21 3 views
-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__' 

는 영원히이 속성인가 손이 닿지 않았다?

+0

코드를 액세스하는 예가 있습니까? 플러그인 내부에 액세스 코드가 있습니까? – spirulence

+0

객체가 이해할 수없는 메커니즘 (Python에 처음)으로 플러그인에 전달됩니다. 나는 단지 미디어를하고 있습니다. 연예인. 미디어. –

+0

@ spirulence 내가 알고있는 속성에 대해 같은 오류가 발생한다는 사실에 주목하는 것은 흥미 롭습니다. 그래서 내가 부여한 객체의 본질에 대해 잘못 생각한 것 같습니다. –

답변

0

MediaRoot 객체는 객체에서 서브 클래 싱되지 않으므로 보통 Python 객체처럼 __getattr__ 메서드가 없습니다. 이 시도 : 당신은이

class MediaRoot(object):

+0

코드가 내 플러그인 범위 밖에 있습니다. 나는 그것을 바꿀 수 없다. ... –

+0

@JohnO, 그때 당신은 그것을 고칠 수있는 사람에게 "업스트림"이라는 끔찍한 버그를보고해야하고, 당신의 상사 나 고객에게 왜 그들이 깨진 코드를 고칠 수 없다는 제약 조건을 설명해야한다. 함께 일하는 것은 해결책을 불가능하게 만든다. 위로 몇 년 동안 무료로 랜싱을 할 때, 나는 그런 환영받지 못하는 메시지를 전달하는 기술을 익혔다. -) –

0

을 ... : 당신이 글로벌 수준에서 __metaclass__ = type가없는 한

파이썬 2에서,이 어떤 아무도해야 (AN 이전 스타일 클래스입니다
class MediaRoot: 

더 이상 사용하지 마십시오!) - 필요합니다.

이 오류를 해결할 수 없다면 나는 생각하지 않습니다. 구제책이 있습니다.

실제로 추적 표시에 표시된 agentkit.py의 코드는 문제가 있지만 이전 스타일의 클래스 인 MediaRoot이 첫 번째 문제입니다.

+0

나는 Python 2에 대한 선택권이 없다. 나는 Plex 용 플러그인을 만들고있다. 그들이 무엇을 사용 하든지간에 사용해야합니다. 필자는 문서 작성에 많은 노력을 기울이지 않고, 번들에서 Media.py 파일을 파 내고, 발견했다는 사실에 놀라움을 금치 못했습니다. –

+0

Python 2는 괜찮습니다. Py 3이 더 나을지라도, 매일 직장에서 사용하고 있습니다. 그러나 구식 수업은 방금 부러졌습니다 : 당신이 그것을 고칠 수 없다면 아마도 치료법이 없을 것입니다. –

관련 문제