TypedDict
পিইপি 589 এর মাধ্যমে পাইথন 3.8 এ গৃহীত হয়েছিল । পাইথন থেকে, এটি __total__
বুলিয়ান পতাকাটি True
ডিফল্টরূপে সেট করা হয়:
tot = TypedDict.__total__
print(type(tot))
print(tot)
# <class 'bool'>
# True
অন্যান্য পদে উল্লেখিত, এই পদ্ধতি বিস্তারিত সীমিত ডক্স , কিন্তু @Yann একপ্রকার সুক্ষ্ম স্কেল লিঙ্ক CPython সোর্স কোড জোরালোভাবে পরামর্শ __total__
নতুন সঙ্গে সম্পর্কযুক্ত total
শব্দ পাইথন 3.8 চালু :
# cypthon/typing.py
class _TypedDictMeta(type):
def __new__(cls, name, bases, ns, total=True):
"""Create new typed dict class object.
...
"""
...
if not hasattr(tp_dict, '__total__'):
tp_dict.__total__ = total
...
এটা কিভাবে কাজ করে?
সংক্ষিপ্তসার : ডিফল্টরূপে, একটি সংজ্ঞায়িত তাত্ক্ষণিকতার সময় সমস্ত কীগুলি প্রয়োজন TypedDict
। total=False
এই বিধিনিষেধকে ওভাররাইড করে এবং alচ্ছিক কীগুলির অনুমতি দেয়। নিম্নলিখিত বিক্ষোভ দেখুন।
প্রদত্ত
একটি পরীক্ষা ডিরেক্টরি ট্রি:
কোড
পরীক্ষা ডিরেক্টরি ফাইল:
# rgb_bad.py
from typing import TypedDict
class Color(TypedDict):
r: int
g: int
b: int
a: float
blue = Color(r=0, g=0, b=255) # missing "a"
# rgb_good.py
from typing import TypedDict
class Color(TypedDict, total=False):
r: int
g: int
b: int
a: float
blue = Color(r=0, g=0, b=255) # missing "a"
ডেমো
যদি কোনও কী অনুপস্থিত থাকে তবে মাইপি কমান্ডলাইনে অভিযোগ করবে:
> mypy code/rgb_bad.py
code\rgb_bad.py:11: error: Key 'a' missing for TypedDict "Color"
...
Perm total=False
চ্ছিক কীগুলির অনুমতি নির্ধারণ :
> mypy code/rgb_good.py
Success: no issues found in 1 source file
আরো দেখুন
- সম্পূর্ণরূপে প্রদর্শন করে আর। হেট্টিংগার টুইট করেছেন
- পিইপি 589 এর সম্পূর্ণতার উপর পিইপি বিভাগ
- প্রকারের উপর পাইথনের নিবন্ধ বিভাগ এবং
TypedDict
রিয়েল পাইথন দ্বারা 3.8 পাইথনে
typing-extensions
TypedDict
পাইথন 3.5, 3.6 ব্যবহার করার জন্য প্যাকেজ
typing
নথিভুক্ত নয়, এবং যে অংশটি নথিভুক্ত রয়েছে খুব খারাপ।