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


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.