নামডটপলে ইঙ্গিতগুলি টাইপ করুন


127

নিম্নলিখিত কোডের টুকরো বিবেচনা করুন:

from collections import namedtuple
point = namedtuple("Point", ("x:int", "y:int"))

আমি কী অর্জন করতে চাইছি তার উপরোক্ত কোডটি প্রদর্শন করার একমাত্র উপায়। আমি namedtupleটাইপ ইঙ্গিত দিয়ে করতে চাই ।

উদ্দেশ্য হিসাবে ফলাফল কীভাবে অর্জন করবেন আপনি কোনও মার্জিত উপায় জানেন?


2
এছাড়াও, পাই .7..7 দিয়ে শুরু করে আপনার কাছে ডেটাগ্লাস বিকল্প রয়েছে: ডকস.পিথথন.আর
— /

উত্তর:


151

৩.6 সাল থেকে টাইপড নামের টিপলের জন্য পছন্দসই সিনট্যাক্স

from typing import NamedTuple

class Point(NamedTuple):
    x: int
    y: int = 1  # Set default value

Point(3)  # -> Point(x=3, y=1)

পাইথন ৩.7 শুরু করে সম্পাদনা করুন , ব্যবহার বিবেচনা করুন dataclasses(আপনার আইডিই এখনও স্ট্যাটিক টাইপ পরীক্ষার জন্য তাদের সমর্থন করতে পারে না):

from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int = 1  # Set default value

Point(3)  # -> Point(x=3, y=1)

12
@JohnE; ওপি বিশেষত নামযুক্ত টিপলস চেয়েছিল। হ্যাঁ, নামযুক্ত টিউপসগুলির অনেকগুলি ব্যবহারের ডেটা ক্লাস দ্বারা আরও ভাল পরিবেশিত হবে। কিন্তু চমৎকার উদ্ধৃত করা কেন নয় namedtuples : আপনি নামের সাথে একটি tuple, সব উপায়ে চাইলে: একটি namedtuple জন্য যেতে
— উলফগ্যাং Kuehn

1
ডেটা চশমা ব্যবহার করে, ফলস্বরূপ অবজেক্টটি যেমন আপনি একটি টুপল করে ফেলতে পারেন তেমনটি পুনর্গঠন করা সম্ভব নয়
— VARAK

6
একটি tuple অপরিবর্তনীয়। একটি ডেটাগ্লাস নয় (ডিফল্টরূপে) এতে হিমায়িত পতাকা থাকে যা টিপলের আচরণের কাছে চলে আসে। সচেতন হওয়ার মতো কিছু।
— shao.lo

103

তুমি ব্যবহার করতে পার typing.NamedTuple

ডক্স থেকে

সংস্করণ টাইপ এর namedtuple।

>>> import typing
>>> Point = typing.NamedTuple("Point", [('x', int), ('y', int)])

এটি কেবলমাত্র পাইথনে 3.5 পরে উপস্থিত রয়েছে


আমি এটা ভালো ঘোষণা করেছিলেন: GeoPoint = NamedTuple('GeoPoint', [('longitude', float), ('latitude', float)])তারপর আমি চেষ্টা জিও = GeoPoint (** তথ্য) যেখানে তথ্য প্রয়োজন কী ও মান হচ্ছে ধারণকারী অভি decimal.Decimal, এবং ভাসা করার কোন ঢালাই ঘটবে; (কোন typerror পারেন :( :( সুতরাং কিভাবে এই typing.NamedTupleকাজ দেখতে? সারকথা .github.com / andilabs / 15002176b2bda786b9037077fa06cc71
— andilabs

8
@ কান্দি টাইপিং কার্যকর বা ভেরিয়েবল কাস্ট করে না, আফাইক।
— ভরগভ রাও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.