2016-10-23 5 views
0

인스턴스 __hash__없는 attribue는 예를 들어, __getattr__() 기능을 가지고있다. 나는이 문제를 해결하려면 어떻게해야파이썬 : <code>PackOfPersons.say_name()</code>이 <code>PackOfPersons.person_objects()</code> 내부 <code>Person.say_name()</code><code>Person</code>에 대한 인스턴스를 호출합니다 : <code>PackOfPersons</code>의

line 18, in _group_helper 
    getattr(person, item)(*args, **kwargs) 
AttributeError: Person instance has no attribute '__hash__' 

:

class Person: 
    def __init__(self, name): 
     self.name = name 

    def say_name(self): 
     print 'my name is', self.name 

    def add_to_set(self): 
     PersonObjectSet.add(self) 

class PackOfPersons: 
    def __init__(self, person_objects): 
     self.person_objects = person_objects 

    def __getattr__(self, item): 
     def _group_helper(*args, **kwargs): 
      for person in self.person_objects: 
       getattr(person, item)(*args, **kwargs) 

     return _group_helper 


PersonObjectSet = set([]) 
PackObjectSet = set([]) 

a = Person("Albert") 
b = Person("Bernie") 
c = Person("Catherine") 
p = PackOfPersons([a, b, c]) 
p.say_name() 
PackObjectSet.add(p) 

마지막 행은 다시으로 추적 오류가 발생합니다?

답변

0

신고시 문제가 해결되었습니다. class PackOfPersons(object):