คำถามติดแท็ก type-hinting

พิมพ์คำใบ้ผูกอาร์กิวเมนต์ของฟังก์ชันให้กับออบเจ็กต์เฉพาะหรือพิมพ์อย่างมาก

2
พิมพ์คำใบ้สำหรับไฟล์หรือวัตถุคล้ายไฟล์?
มีคำใบ้ประเภทที่ถูกต้องสำหรับใช้กับไฟล์หรือวัตถุคล้ายไฟล์ใน Python หรือไม่ ตัวอย่างเช่นฉันจะพิมพ์คำใบ้ค่าส่งคืนของฟังก์ชันนี้ได้อย่างไร def foo(): return open('bar')

1
วิธีใส่คำอธิบายประกอบประเภทของค่าที่ส่งคืนหลายค่า
ฉันจะใช้คำแนะนำประเภทเพื่อใส่คำอธิบายประกอบฟังก์ชันที่ส่งคืนค่าIterableที่ให้ค่าสองค่าเสมอ: a boolและ a ได้strอย่างไร คำใบ้Tuple[bool, str]อยู่ใกล้ยกเว้นว่าจะ จำกัด ประเภทค่าส่งคืนเป็นทูเปิลไม่ใช่ตัวสร้างหรือประเภทอื่นที่ทำซ้ำได้ ส่วนใหญ่ฉันสงสัยเพราะฉันต้องการใส่คำอธิบายประกอบฟังก์ชันfoo()ที่ใช้ในการคืนค่าหลายค่าเช่นนี้: always_a_bool, always_a_str = foo() โดยปกติจะทำหน้าที่เช่นfoo()do something like return a, b(ซึ่งส่งคืน tuple) แต่ฉันต้องการให้คำใบ้ประเภทมีความยืดหยุ่นพอที่จะแทนที่ tuple ที่ส่งคืนด้วยเครื่องกำเนิดไฟฟ้าหรือรายการหรืออย่างอื่น

2
ความแตกต่างระหว่างการกำหนดการพิมพ์ Dict และ Dict?
ฉันกำลังฝึกใช้คำแนะนำประเภทใน Python 3.5 เพื่อนร่วมงานคนหนึ่งของฉันใช้typing.Dict: import typing def change_bandwidths(new_bandwidths: typing.Dict, user_id: int, user_name: str) -> bool: print(new_bandwidths, user_id, user_name) return False def my_change_bandwidths(new_bandwidths: dict, user_id: int, user_name: str) ->bool: print(new_bandwidths, user_id, user_name) return True def main(): my_id, my_name = 23, "Tiras" simple_dict = {"Hello": "Moon"} change_bandwidths(simple_dict, my_id, my_name) new_dict = {"new": …

1
ฉันจะตรวจจับ“ ข้อผิดพลาดร้ายแรงที่จับได้” ในคำใบ้ประเภท PHP ได้อย่างไร
ฉันกำลังพยายามใช้ Type Hinting ของ PHP5 กับหนึ่งในคลาสของฉัน class ClassA { public function method_a (ClassB $b) {} } class ClassB {} class ClassWrong{} การใช้งานที่ถูกต้อง: $a = new ClassA; $a->method_a(new ClassB); ข้อผิดพลาดในการผลิต: $a = new ClassA; $a->method_a(new ClassWrong); ข้อผิดพลาดร้ายแรงที่ตรวจจับได้: อาร์กิวเมนต์ 1 ที่ส่งไปยัง ClassA :: method_a () ต้องเป็นอินสแตนซ์ของ ClassB อินสแตนซ์ของ ClassWrong ที่กำหนด ... เป็นไปได้ไหมที่จะจับข้อผิดพลาดนั้น …

4
ฉันจะใส่คำอธิบายประกอบประเภทใน for-loop ได้อย่างไร
ฉันต้องการใส่คำอธิบายประกอบประเภทของตัวแปรในfor-loop ฉันลองสิ่งนี้: for i: int in range(5): pass แต่มันไม่ได้ผลแน่นอน สิ่งที่ฉันคาดหวังคือการเติมข้อความอัตโนมัติใน PyCharm 2016.3.2 คำอธิบายประกอบล่วงหน้าเช่นนี้: i: int for i in range(5): pass ไม่ได้ช่วย คำอธิบายประกอบล่วงหน้าของ PS ใช้ได้กับ PyCharm> = 2017.1

5
PHP 7 อินเทอร์เฟซการบอกใบ้ประเภทส่งคืนและตัวเอง
อัปเดต : ขณะนี้ PHP 7.4 รองรับความแปรปรวนร่วมและความแตกต่างซึ่งแก้ไขปัญหาสำคัญที่เกิดขึ้นในคำถามนี้ ฉันพบปัญหาบางอย่างกับการใช้คำใบ้ประเภทการส่งคืนใน PHP 7 ความเข้าใจของฉันคือการบอกใบ้: selfหมายความว่าคุณตั้งใจให้คลาสการใช้งานกลับมาเอง ดังนั้นฉันจึงใช้: selfอินเทอร์เฟซเพื่อระบุสิ่งนั้น แต่เมื่อฉันพยายามใช้อินเทอร์เฟซจริงฉันพบข้อผิดพลาดเกี่ยวกับความเข้ากันได้ ต่อไปนี้เป็นการสาธิตง่ายๆเกี่ยวกับปัญหาที่ฉันพบ: interface iFoo { public function bar (string $baz) : self; } class Foo implements iFoo { public function bar (string $baz) : self { echo $baz . PHP_EOL; return $this; } } (new Foo ()) …

2
คำสั่งประเภทสนับสนุนที่มีคำใบ้เป็นนัยหรือไม่?
คุณสามารถกำหนดคำใบ้ประเภทสำหรับตัวแปรที่กำหนดด้วยwithไวยากรณ์ได้หรือไม่? with example() as x: print(x) ฉันต้องการพิมพ์คำใบ้ด้านบนเพื่อบอกว่าxเป็นstr(เป็นตัวอย่าง) สิ่งเดียวที่ฉันพบคือใช้ตัวแปรระดับกลาง แต่สิ่งนี้รู้สึกแฮ็ค with example() as x: y: str = x print(y) ฉันไม่สามารถหาตัวอย่างในที่เอกสารการพิมพ์

2
เหตุใดฉันจึงได้รับข้อผิดพลาด“ คุณสมบัติที่พิมพ์ต้องไม่สามารถเข้าถึงได้ก่อนเริ่มต้น” เมื่อแนะนำคำแนะนำประเภทคุณสมบัติ?
ฉันได้อัพเดตคำจำกัดความของคลาสของฉันเพื่อใช้ประโยชน์จากคำแนะนำประเภทคุณสมบัติที่แนะนำใหม่เช่นนี้: class Foo { private int $id; private ?string $val; private DateTimeInterface $createdAt; private ?DateTimeInterface $updatedAt; public function __construct(int $id) { $this->id = $id; } public function getId(): int { return $this->id; } public function getVal(): ?string { return $this->val; } public function getCreatedAt(): ?DateTimeInterface { return $this->createdAt; } public …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.