class type_name:
def __init__(self, fields):
self._fields = fields
self._mutable = False
self.a = self._fields[0]
self.b = self._fields[1]
self.c = self._fields[2]
def _replace(self, **kargs):
if self._mutable:
for key, value in kargs.items():
if key == 'a':
self.a = value
if key == 'b':
self.b = value
if key == 'c':
self.c = value
return None
else:
A = self.a, B = self.b, C = self.c
return self.type_name(**kargs)
Метод _replace принимает ** kargs в качестве входного сигнала. метод _replace зависит от значения, сохраненного в имени экземпляра self._mutable. if self.mutable == Истинно, имя экземпляра вызываемого объекта изменяется и метод возвращает None Итак, если origin = Point (0,0) и мы вызываем origin._replace (y = 5), тогда print (origin) будет отображаться как Point (x = 0, y = 5), потому что происхождение мутируется.как исправить метод _replace
Если self.mutable == False, он возвращает новый объект того же класса, значения экземпляра которого совпадают, за исключением тех, которые указаны в kargs. Итак, если origin = Point (0,0), и мы вызываем new_origin = origin._replace (y = 5), тогда print (origin, new_origin) будет отображаться как Точка (x = 0, y = 0) Точка (x = 0 , y = 5), потому что происхождение не мутировано
Я не уверен, что не так с моей функцией _replace, может кто-нибудь помочь мне исправить это? спасибо
Правильно отформатируйте тело текста, используя '' like '' –
martianwars