Maximaler Rekursionstiefenfehler mit getattr

Ich habe diesen Code;

class NumberDescriptor(object):
    def __get__(self, instance, owner):
        name = (hasattr(self, "name") and self.name)
        if not name:
            name = [attr for attr in dir(owner) if getattr(owner,attr) is self][0]
            self.name = name
        return getattr(instance, '_' + name)
    def __set__(self,instance, value):
        name = (hasattr(self, "name") and self.name)
        if not name:
            owner = type(instance)
            name = [attr for attr in dir(owner) if getattr(owner,attr) is self][0]
            self.name = name
        setattr(instance, '_' + name, int(value))

class Insan(object):
    yas = NumberDescriptor()

a = Insan()
print a.yas
a.yas = "osman"
print a.yas

In der Zeile wird ein Fehler mit der maximalen Rekursionstiefe angezeigtname = [attr for attr in dir(owner) if getattr(owner,attr) is self][0]. Ich möchte, dass diese Zeile mir den Namen der Variablen gibt, die für die aktuelle Deskriptorinstanz verwendet wird. Kann jemand sehen, was ich hier falsch mache?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage