คำถามติดแท็ก introspection

ความสามารถของภาษาการเขียนโปรแกรมเชิงวัตถุบางภาษาเพื่อกำหนดประเภทของอ็อบเจ็กต์ขณะรันไทม์

9
รับชื่อคลาสของอินสแตนซ์?
ฉันจะหาชื่อของคลาสที่สร้างอินสแตนซ์ของวัตถุใน Python ได้อย่างไรถ้าฟังก์ชันที่ฉันทำนี้เป็นคลาสพื้นฐานที่คลาสของอินสแตนซ์ได้รับมา กำลังคิดว่าบางทีโมดูลตรวจสอบอาจช่วยฉันที่นี่ แต่ดูเหมือนจะไม่ให้สิ่งที่ฉันต้องการ และขาดการแยก__class__สมาชิกฉันไม่แน่ใจว่าจะรับข้อมูลนี้ได้อย่างไร

25
มีฟังก์ชันในตัวเพื่อพิมพ์คุณสมบัติและค่าปัจจุบันของวัตถุทั้งหมดหรือไม่?
ดังนั้นสิ่งที่ฉันกำลังมองหาที่นี่คือสิ่งที่ต้องการฟังก์ชั่นprint_rของ PHP นี่คือเพื่อให้ฉันสามารถแก้จุดบกพร่องสคริปต์ของฉันโดยดูว่าสถานะของวัตถุที่เป็นปัญหา


19
กำหนดชื่อฟังก์ชั่นจากภายในฟังก์ชั่นนั้น (โดยไม่ต้องใช้การย้อนกลับ)
ใน Python โดยไม่ต้องใช้tracebackโมดูลมีวิธีกำหนดชื่อของฟังก์ชันจากภายในฟังก์ชันนั้นหรือไม่? บอกว่าฉันมีโมดูลฟูด้วยแถบฟังก์ชั่น เมื่อดำเนินการfoo.bar()มีวิธีที่บาร์จะรู้ชื่อของแถบหรือไม่ หรือดีกว่ายังfoo.barชื่อ? #foo.py def bar(): print "my name is", __myname__ # <== how do I calculate this at runtime?

17
การค้นหาวิธีการที่วัตถุ Python มี
รับวัตถุหลามชนิดใดมีวิธีง่าย ๆ เพื่อรับรายการของวิธีการทั้งหมดที่วัตถุนี้มี? หรือ, หากไม่สามารถทำได้มีอย่างน้อยวิธีง่าย ๆ ในการตรวจสอบว่ามีวิธีการเฉพาะนอกเหนือจากเพียงตรวจสอบว่ามีข้อผิดพลาดเกิดขึ้นเมื่อวิธีการที่เรียกว่า?

22
ฉันจะดูภายในวัตถุ Python ได้อย่างไร
ฉันเริ่มเขียนโค้ดในโครงการต่าง ๆ โดยใช้ Python (รวมถึงการพัฒนาเว็บไซต์ Django และการพัฒนาเกม Panda3D) เพื่อช่วยให้ฉันเข้าใจสิ่งที่เกิดขึ้นฉันต้องการ 'ดู' ภายในวัตถุ Python โดยทั่วไปเพื่อดูว่าพวกเขาทำเครื่องหมายเช่นวิธีการและคุณสมบัติของพวกเขา ดังนั้นถ้าฉันมีวัตถุ Python ฉันต้องพิมพ์เนื้อหาอะไร เป็นไปได้ไหม

15
จะรับชื่อพารามิเตอร์วิธีได้อย่างไร
รับฟังก์ชั่น Python: def a_method(arg1, arg2): pass ฉันจะแยกจำนวนและชื่อของอาร์กิวเมนต์ได้อย่างไร คือให้ที่ฉันมีการอ้างอิงถึงfuncผมต้องการที่จะกลับมาfunc.[something]("arg1", "arg2") สถานการณ์การใช้งานสำหรับสิ่งนี้คือฉันมีมัณฑนากรและฉันต้องการใช้อาร์กิวเมนต์เมธอดตามลำดับเดียวกับที่ปรากฏสำหรับฟังก์ชันจริงเป็นคีย์ คือมัณฑนากรจะพิมพ์ออกมา"a,b"เมื่อฉันโทรได้a_method("a", "b")อย่างไร

5
ใช้ isKindOfClass กับ Swift
ฉันพยายามรับ Swift lang และฉันสงสัยว่าจะแปลง Objective-C ต่อไปนี้เป็น Swift ได้อย่างไร: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [super touchesBegan:touches withEvent:event]; UITouch *touch = [touches anyObject]; if ([touch.view isKindOfClass: UIPickerView.class]) { //your touch was in a uipickerview ... do whatever you have to do } } โดยเฉพาะอย่างยิ่งฉันจำเป็นต้องรู้วิธีใช้isKindOfClassในไวยากรณ์ใหม่ override func touchesBegan(touches: NSSet, withEvent event: UIEvent) …

8
วิธีรับชื่อเมธอดของผู้โทรในเมธอดที่เรียกใช้?
Python: วิธีการรับชื่อวิธีการของผู้โทรในวิธีการที่เรียกว่า? สมมติว่าฉันมี 2 วิธี: def method1(self): ... a = A.method2() def method2(self): ... หากฉันไม่ต้องการเปลี่ยนแปลงวิธีการ 1 วิธีรับชื่อของผู้โทร (ในตัวอย่างนี้ชื่อคือวิธีที่ 1) ในวิธีที่ 2?

3
เครื่องหมายทับหมายความว่าเอาต์พุต help ()
อะไร/เฉลี่ยในหลาม 3.4 ของhelpการส่งออกสำหรับrangeก่อนวงเล็บปิดหรือไม่ >>> help(range) Help on class range in module builtins: class range(object) | range(stop) -> range object | range(start, stop[, step]) -> range object | | Return a virtual sequence of numbers from start to stop by step. | | Methods defined here: | | __contains__(self, key, /) …

7
แสดงรายการคลาสพื้นฐานทั้งหมดในลำดับชั้นของคลาสที่กำหนดหรือไม่
เมื่อพิจารณาถึงคลาสFoo(ไม่ว่าจะเป็นคลาสสไตล์ใหม่หรือไม่ก็ตาม) คุณจะสร้างคลาสพื้นฐานทั้งหมดได้อย่างไร- ที่ใดก็ได้ในลำดับชั้นการสืบทอด - issubclassจาก?

14
การดึงชื่อ / ค่าของแอตทริบิวต์ที่สืบทอดมาโดยใช้ Java Reflection
ฉันเป็นวัตถุ Java 'ChildObj' ซึ่งขยายจาก 'ParentObj' ตอนนี้ถ้าเป็นไปได้ที่จะดึงชื่อคุณลักษณะและค่าทั้งหมดของ ChildObj รวมถึงคุณลักษณะที่สืบทอดมาด้วยโดยใช้กลไกการสะท้อน Java? Class.getFieldsให้อาเรย์ของคุณลักษณะสาธารณะและClass.getDeclaredFieldsมอบอาเรย์ของฟิลด์ทั้งหมดให้ฉัน แต่ไม่มีรายการใดรวมถึงรายการฟิลด์ที่สืบทอด มีวิธีใดที่จะดึงข้อมูลคุณลักษณะที่สืบทอดมาด้วยหรือไม่

8
ฉันจะเข้าถึงคุณสมบัติของวัตถุจาวาสคริปต์ได้อย่างไรหากฉันไม่รู้ชื่อ
สมมติว่าคุณมีวัตถุจาวาสคริปต์ดังนี้: var data = { foo: 'bar', baz: 'quux' }; คุณสามารถเข้าถึงคุณสมบัติโดยใช้ชื่อคุณสมบัติ: var foo = data.foo; var baz = data["baz"]; แต่เป็นไปได้หรือไม่ที่จะได้รับค่าเหล่านี้หากคุณไม่ทราบชื่อคุณสมบัติ? ลักษณะที่ไม่เรียงลำดับของคุณสมบัติเหล่านี้ทำให้ไม่สามารถแยกออกจากกันได้หรือไม่? ในกรณีของฉันฉันกำลังคิดถึงสถานการณ์ที่ฟังก์ชันต้องยอมรับชุดของคู่ชื่อ - ค่า แต่ชื่อของคุณสมบัติอาจเปลี่ยนไป ความคิดของฉันเกี่ยวกับวิธีการทำสิ่งนี้คือการส่งชื่อคุณสมบัติไปยังฟังก์ชันพร้อมกับข้อมูล แต่มันให้ความรู้สึกเหมือนแฮ็ค ฉันอยากจะทำสิ่งนี้ด้วยการวิปัสสนาถ้าเป็นไปได้

7
การวิปัสสนาและยาสามัญอย่างรวดเร็ว
ฉันพยายามสร้างclassประเภทตามอินสแตนซ์แบบไดนามิกโดยใช้ generics แต่ฉันกำลังประสบกับความยากลำบากในการวิปัสสนาในชั้นเรียน คำถามมีดังนี้ มี Swift เทียบเท่ากับ Obj-C self.classหรือไม่? มีวิธีสร้างอินสแตนซ์คลาสโดยใช้AnyClassผลลัพธ์จากNSClassFromStringหรือไม่ มีวิธีรับAnyClassหรือพิมพ์ข้อมูลจากพารามิเตอร์ทั่วไปอย่างเคร่งครัดTหรือไม่? (คล้ายกับtypeof(T)ไวยากรณ์ของ C # )

10
รับฟิลด์ของโมเดลใน Django
ด้วยโมเดล Django ฉันกำลังพยายามแสดงรายการฟิลด์ทั้งหมด ฉันเคยเห็นตัวอย่างการทำเช่นนี้โดยใช้แอตทริบิวต์แบบจำลอง _meta แต่เครื่องหมายขีดล่างข้างหน้าเมตาไม่ได้ระบุว่าแอตทริบิวต์ _meta เป็นแอตทริบิวต์ส่วนตัวและไม่ควรเข้าถึงโดยตรงหรือไม่ ... เนื่องจากรูปแบบของ _meta อาจเปลี่ยนแปลงได้ในอนาคตและไม่ใช่ API ที่เสถียร? _meta เป็นข้อยกเว้นของกฎนี้หรือไม่ มีความเสถียรและพร้อมใช้งานหรือไม่หรือถือว่าเป็นการปฏิบัติที่ไม่ดีในการเข้าถึง หรือมีฟังก์ชั่นหรือวิธีอื่นในการวิเคราะห์ฟิลด์ของโมเดลโดยไม่ใช้แอตทริบิวต์ _meta หรือไม่? ด้านล่างนี้คือรายการลิงก์บางส่วนที่แสดงวิธีการดำเนินการโดยใช้แอตทริบิวต์ _meta คำแนะนำใด ๆ ที่ชื่นชมมาก django object get / set ฟิลด์ http://www.djangofoo.com/80/get-list-model-fields วิธีการพิจารณาฟิลด์โมเดล django?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.