[Python] [Property] on the optimization of the properties decorator

In short, the process is to set the properties needed to change it, change can be done only once decorated the get and set requests (del can also be added using the same principle)

Code written is not optimal but can refer to this idea:

import copy

class PropertyTest(object):

    def __init__(self, fget=None):

        self.fget = fget
        self.fset = copy.deepcopy(fget)

    def __get__(self, instance, owner):
        return self.fget(instance)

    def __set__(self, instance, value):
        self.fset(instance, value)


class Person(object):

    def __init__(self, name=None, age=None, region=None):
        self.name = name
        self.age = age
        self.region = region
        pass

    @PropertyTest
    def name(self, name_value=None):
        if name_value is None:
            return self.name
        else:
            self.name = name_value

    @PropertyTest
    def age(self, age_value=None):
        if age_value is None:
            return self.age
        else:
            self.age = age_value

    @PropertyTest
    def region(self, region_value=None):
        if region_value is None:
            return self.region
        else:
            self.region = region_value


if __name__ == '__main__':
    person = Person 
    person.name = "张小凡"
    person.age = 20
    person.region = "中国"
    print("{}是{}人,年龄{}岁".format(person.name, person.region, person.age))

  

operation result:

 

 

It can be found in our code that uses only @PropertyTest a decorator.

Problems encountered:

return self.fget (instance) This line of code should explain how? self.fget is passed Person object, instance is an instance of an object. Two together, how to access the internal variables becomes of it?

Guess you like

Origin www.cnblogs.com/stanmao/p/11601090.html