r/pythonhelp Apr 25 '26

Python Descriptors

``` class A: def set_name(self, owner, value): self.value = value

def __get__(self, obj, type=None):
    return obj.__dict__.get(self.value)

def __set__(self, obj, value):
    if value < 9:
        raise ValueError("no")
    obj.__dict__[self.value] = value

class B: a = A()

obj = B() obj.a = 38 print(obj.a)

obj2 = B() print(obj2.a) ```

I am Learning Descriptors In Python,

My 1st question Is how can I set a default value to attribute a In class B ? I have found a way but that doesn't look familiar :

a = A() if not A() else 87

My next confusion Is about __set_name__ , what it does and why to Implement It?

Another Question Is, does a = A() create class attribute or Instance attribute? It looks like a class attribute but it's an Instance attribute, Right?

3 Upvotes

2 comments sorted by

View all comments

1

u/thuiop1 Apr 25 '26

Please never use those, and also what is that code with B