Python: для нескольких свойств используйте один метод получения и установки - PullRequest
0 голосов
/ 15 апреля 2020

Я создал класс с несколькими свойствами. Я хочу использовать одну функцию для метода получения и вторую для метода установки.

class person:

    def __init__(self, fname, lname, city, state):
        # make all attributes as private
        self._fname = fname
        self._lname = lname
        self._city = city
        self._state = state

    @property  # get method
    def fname(self):
        return self._fname

    @fname.setter  # set method
    def fname(self,fname):
        self._fname = fname

    @property
    def lname(self):
        return self._lname

    @lname.setter
    def lname(self,lname):
        self._lname = lname

    @property
    def city(self):
        return self._city

    @city.setter
    def city(self, city):
        self._city = city

    @property
    def state(self):
        return self._state

    @state.setter
    def state(self, state):
        self._state = state  

Как использовать все свойства для одного метода получения и одного метода набора?

например:

def get(self):
    return self._attr

def set(self,value):
    self._attr = value

1 Ответ

0 голосов
/ 16 апреля 2020
class person:
    def __set_name__(self, name):
        self.name = name

    def __get__(self, obj, type=None) -> object:
        return obj.__dict__.get(self.name)

    def __set__(self, obj, value) -> None:
        obj.__dict__[self.name] = value

my_value = person
my_values.fname = 'Shivam'
my_values.lname = 'Gupta'

print(my_values.fname)  #--> Shivam
print(my_values.lname)  #--> Gupta
...