How to add property to a class dynamically?

前端 未结 24 2124
梦毁少年i
梦毁少年i 2020-11-22 12:44

The goal is to create a mock class which behaves like a db resultset.

So for example, if a database query returns, using a dict expression, {\'ab\':100, \'cd\'

24条回答
  •  情深已故
    2020-11-22 13:11

    Something that works for me is this:

    class C:
        def __init__(self):
            self._x=None
    
        def g(self):
            return self._x
    
        def s(self, x):
            self._x = x
    
        def d(self):
            del self._x
    
        def s2(self,x):
            self._x=x+x
    
        x=property(g,s,d)
    
    
    c = C()
    c.x="a"
    print(c.x)
    
    C.x=property(C.g, C.s2)
    C.x=C.x.deleter(C.d)
    c2 = C()
    c2.x="a"
    print(c2.x)
    

    Output

    a
    aa
    

提交回复
热议问题