Python: для нескольких свойств используйте один метод получения и установки
Я создал класс с несколькими свойствами. Я хочу использовать одну функцию для метода получения, а вторую - для метода установки.
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 ответ
Решение
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