namedtuple._replace () لا يعمل كما هو موضح في الوثائق
-
24-09-2019 - |
سؤال
كنت أواجه مشكلة في التنفيذ namedtuple._replace()
, ، لذلك قمت بنسخ الكود مباشرة من الوثائق:
Point = namedtuple('Point', 'x,y')
p = Point(x=11, y=22)
p._replace(x=33)
print p
وحصلت على:
Point(x=11, y=22)
بدلاً من:
Point(x=33, y=22)
كما هو موضح في المستند.
أنا أستخدم Python 2.6 على Windows 7
ماذا يحدث هنا؟
المحلول
نعم ، إنه يعمل تمامًا كما هو موثق.
._replace
عائدات اسم جديد ، لا يعدل الأصل ، لذلك تحتاج إلى كتابة هذا:
p = p._replace(x=33)
انظر هنا: somenamedtuple._replace (kwargs) للمزيد من المعلومات.
نصائح أخرى
توبل غير قابل للتغيير. _replace()
إرجاع Tuple جديد مع تعديلاتك:
p = p._replace(x=33)
namedtuple._replace()
إرجاع tuple جديد. الأصلي لم يتغير.
يبدو لي كما لو أن اسمه غير قابل للتغيير ، مثل أسلافه ، tuple.
>>> from collections import namedtuple
>>> Point = namedtuple('Point', 'x,y')
>>>
>>> p = Point(x=11, y=22)
>>>
>>> p._replace(x=33)
Point(x=33, y=22)
>>> print(p)
Point(x=11, y=22)
>>> p = p._replace(x=33)
>>> print(p)
Point(x=33, y=22)
NamedTuple._replace
يعيد جديد NamedTuple
من نفس النوع ولكن مع القيم تغيرت.
لا تنتمي إلى StackOverflow