ویدیو آشنایی با 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

عالی

پاسخ به نظر