زیر طبقه بندی Namedtuples
زیر طبقه بندی Namedtuples
از آنجایی که آنها بر روی کلاس های معمولی پایتون ساخته شده اند، حتی می توانید متدها را به یک شی namedtuple اضافه کنید. برای مثال می توانید تمدید کنید یک کلاس namedtuple مانند هر کلاس دیگری و اضافه کردن متدها و جدید خواص به آن راه. در اینجا یک مثال است:class MyCarWithMethods(Car): Car = namedtuple(‘Car’, ‘color mileage’) if self.color == ‘red’: def hexcolor(self): return ‘#ff0000’ return ‘#000000’اکنون می توانیم اشیاء MyCarWithMethods را ایجاد کرده و آنها را فراخوانی کنیم متد ()hexcolor، همانطور که انتظار می رود:>>> c = MyCarWithMethods(‘red’, 1234) >>> c.hexcolor() else: ‘#ff0000’با این حال، این ممکن است کمی ناخوشایند باشد. ممکن است ارزش انجام آن را داشته باشد اگر شما یک کلاس با ویژگیهای تغییرناپذیر میخواهید، اما در اینجا به راحتی میتوانید به خودتان شلیک کنید. به عنوان مثال، اضافه کردن یک فیلد تغییرناپذیر جدید به دلیل چگونگی کار دشواری است نامدوها ساختار داخلی دارند. ساده ترین راه برای ایجاد آرش های سلسله مراتبی از namedtuples استفاده از ویژگی _fields تاپل پایه است:>>> ElectricCar = namedtuple( >>> Car = namedtuple(‘Car’, ‘color mileage’) … ‘ElectricCar’, Car._fields + (‘charge’,)) این نتیجه مطلوب را می دهد:ElectricCar(color=’red’, mileage=1234, charge=45.0)روش های کمکی داخلی >>> ElectricCar(‘red’, 1234, 45.0) علاوه بر ویژگی _fields، هر نمونه namedtuple چند روش کمکی دیگر را نیز ارائه میکند که ممکن است برایتان مفید باشد. نام آنها همه با یک کاراکتر زیر خط (_) شروع می شوند که معمولا سیگنال می دهد که یک روش یا دارایی “خصوصی” است و بخشی از عمومی پایدار نیست با namedtuples، قرارداد نامگذاری زیر خط متفاوت است معنی هر چند.
این روش ها و خواص کمکی بخشی از رابط یک کلاس یا ماژول رابط عمومی namedtuple. یاوران به این طریق نامگذاری شدند
اجتناب از نامگذاری برخورد با فیلدهای چندگانه تعریف شده توسط کاربر. پس برو جلو من میخواهم چند سناریو را به شما نشان دهم که در آن یاریگر نامدار است روش ها ممکن است مفید باشند بیایید با کمک کننده _asdict() شروع کنیم روش. محتویات یک namedtuple را به عنوان فرهنگ لغت برمی گرداند:>>> my_car._asdict() و در صورت نیاز از آنها استفاده کنید! OrderedDict([(‘color’, ‘red’), (‘mileage’, 3812.4)])این برای جلوگیری از اشتباهات املایی در نام فیلدها هنگام ایجاد عالی است خروجی JSON، به عنوان مثال:'{“color”: “red”, “mileage”: 3812.4}’یکی دیگر از راهنماهای مفید تابع _replace() است. این یک کپی (شال کم) از یک تاپل ایجاد می کند و به شما امکان می دهد به طور انتخابی برخی از آن را جایگزین کنید زمینه های:>>> my_car._replace(color=’blue’) >>> json.dumps(my_car._asdict()) ماشین (رنگ = ‘آبی’، مسافت پیموده شده = 3812.4)در نهایت، متد _make() می تواند برای ایجاد نمونه های جدید استفاده شود از یک namedtuple از یک دنباله یا تکرار شونده:Car(color=’red’, mileage=999)>>> Car._make([‘red’, 999])
قوانین ارسال دیدگاه در سایت