ویدیو آشنایی با namedTuples در پایتون
April 2023
در پایتون namedTupleها این امکان رو بوجود آوردن تا ما بتونیم به هرکدوم از آیتمها در یک tuple اسم بدیم و برای دسترسی به هرکدوم از اون آیتم ها بتونیم از اون اسم ها استفاده کنیم.
برای ایجاد کردن namedTupleها میتونید به شکل زیر کار کنید:
from collections import namedtuple
nt = namedtuple('Person', 'name age height')
p1 = nt('amir', 20, 180)
در کد بالا اول از ماژول collection کلاس namedTuple رو وارد کردیم. در خط دوم یک آبجکت جدید از کلاس namedTuple ایجاد کردیم.
به طور کلی کلاس namedTuple دوتا مقدار میگیره. اول اسم اون tuple و بعدی اسم فیلدهایی که قراره تاپلتون داشته باشه. اسم فیلدها رو میتونید به شکل یک لیست و یا string ساده بنویسید.
برای مقدار دهی به اون تاپل، اسم آبجکت رو صدا میزنید و مقدارهاتون رو به ترتیب براش ارسال میکنید.
برای خوندن اطلاعات از داخل یک namedTuple میتونید از روش های زیر استفاده کنید:
print(p1)
>> Person(name='amir', age=20, height=180)
print(p1[1])
>> 20
print(p1.name)
>> amir
print(getattr(p1, 'height'))
>> 180
در پایتون namedTupleها به شما چندین متد هم میدن که میتونید از اونها استفاده کنید:
اولین متد _asdict هستش و به شما اجازه میده نتیجه رو به شکل یک دیکشنری ببینید:
print(p1._asdict())
>> OrderedDict([('name', 'amir'), ('age', 20), ('height', 180)])
متد بعدی _fields هستش که اسم فیلدها رو به شما برمیگردونه:
print(p1._fields)
>> ('name', 'age', 'height')
برخلاف تاپل ها شما میتونید مقادیر یک namedTuple ها رو تغییر بدین. برای اینکار از متد _replace استفاده میکنید:
p1 = p1._replace(name='jack')
print(p1)
>> Person(name='jack', age=20, height=180)
اگر ویدیو بالا را دوست داشتید پیشنهاد میکنیم به مطالب زیر هم سر بزنید:
آموزش کار با markdown در پایتون
آموزش متدهای hasattr, getattr, setattr, delattr در پایتون
آموزش فانکشن های any و all در پایتون
دوره اول آموزش پروژه محور پایتون
آموزش آبجکت های container در پایتون
محمد دری
March 2022پاسخ به نظر
خیلی عالی ممنون
همچنین باید بگم سایت خوبی دارید هم محتوا هم محیطش
آموزش دیدن توش راحته
هم از نظر اینترنت هم خود پلیر خیلی خوب طراحی شده
پاسخ به نظر
ehsan
October 2021پاسخ به نظر
با سلام ممنون از زحمات شما
پاسخ به نظر
نوری
July 2021پاسخ به نظر
عالی
پاسخ به نظر