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

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

13
รับรายการคุณสมบัติของวัตถุใน Objective-C
ฉันจะรับรายการ (ในรูปแบบของNSArrayหรือNSDictionary) ของคุณสมบัติวัตถุที่กำหนดใน Objective-C ได้อย่างไร ลองนึกภาพสถานการณ์ต่อไปนี้: ฉันได้กำหนดคลาสพาเรนต์ที่เพิ่งขยายNSObjectซึ่งถือ an NSString, a BOOLและNSDataobject เป็นคุณสมบัติ จากนั้นฉันมีหลายคลาสที่ขยายคลาสพาเรนต์นี้โดยเพิ่มคุณสมบัติที่แตกต่างกันมากมายในแต่ละคลาส มีวิธีใด ๆ ที่ฉันสามารถใช้วิธีการเช่นในผู้ปกครองชั้นเรียนที่จะต้องผ่านวัตถุทั้งหมดและผลตอบแทนการพูดการNSArrayของแต่ละ (เด็ก) คุณสมบัติชั้นเป็นNSStringsที่มีไม่ได้ในระดับผู้ปกครองดังนั้นฉันหลังจากนั้นสามารถใช้เหล่านี้NSStringสำหรับ KVC?

5
แสดงรายการโมดูลทั้งหมดที่เป็นส่วนหนึ่งของแพ็คเกจ python?
มีวิธีที่ตรงไปตรงมาในการค้นหาโมดูลทั้งหมดที่เป็นส่วนหนึ่งของแพ็คเกจ python หรือไม่? ฉันพบการสนทนาเก่า ๆ นี้ซึ่งยังไม่สามารถสรุปได้ แต่ฉันอยากได้คำตอบที่ชัดเจนก่อนที่จะเปิดตัวโซลูชันของตัวเองโดยใช้ os.listdir ()

5
คุณสามารถแสดงรายการอาร์กิวเมนต์คำสำคัญที่ฟังก์ชันได้รับหรือไม่?
ฉันมีคำสั่งซึ่งฉันต้องส่งคีย์ / ค่าเป็นอาร์กิวเมนต์คำหลัก .. ตัวอย่างเช่น .. d_args = {'kw1': 'value1', 'kw2': 'value2'} example(**d_args) สิ่งนี้ใช้งานได้ดีแต่ถ้ามีค่าใน d_args dict ที่ไม่ได้รับการยอมรับจากexampleฟังก์ชันมันก็ตายอย่างเห็นได้ชัด .. พูดว่าถ้าฟังก์ชันตัวอย่างถูกกำหนดเป็นdef example(kw2): นี่เป็นปัญหาเนื่องจากฉันไม่ได้ควบคุมทั้งการสร้างd_argsหรือexampleฟังก์ชัน .. ทั้งคู่มาจากโมดูลภายนอกและexampleยอมรับเฉพาะอาร์กิวเมนต์คำหลักบางส่วนจากคำสั่ง .. ตามหลักการแล้วฉันจะทำ parsed_kwargs = feedparser.parse(the_url) valid_kwargs = get_valid_kwargs(parsed_kwargs, valid_for = PyRSS2Gen.RSS2) PyRSS2Gen.RSS2(**valid_kwargs) ฉันอาจจะแค่กรองคำสั่งจากรายการอาร์กิวเมนต์คำหลักที่ถูกต้อง แต่ฉันสงสัยว่า: มีวิธีแสดงรายการอาร์กิวเมนต์คำหลักโดยทางโปรแกรมที่ฟังก์ชันเฉพาะใช้หรือไม่?

3
ฉันจะรับ filepath สำหรับคลาสใน Python ได้อย่างไร
เมื่อพิจารณาถึงคลาส C ใน Python ฉันจะทราบได้อย่างไรว่าคลาสถูกกำหนดไว้ในไฟล์ใด ฉันต้องการบางสิ่งที่สามารถทำงานได้จากคลาส C หรือจากอินสแตนซ์จาก C เหตุผลที่ฉันทำเช่นนี้เป็นเพราะโดยทั่วไปฉันเป็นคนชอบเอาไฟล์ที่อยู่รวมกันในโฟลเดอร์เดียวกัน ฉันต้องการสร้างคลาสที่ใช้เทมเพลต Django เพื่อแสดงผลเป็น HTML การใช้งานพื้นฐานควรอนุมานชื่อไฟล์สำหรับเทมเพลตตามชื่อไฟล์ที่คลาสกำหนดไว้ สมมติว่าฉันใส่คลาส LocationArtifact ในไฟล์ "base / artifacts.py" จากนั้นฉันต้องการให้ลักษณะการทำงานเริ่มต้นคือชื่อเทมเพลตคือ "base / LocationArtifact.html"

3
รับ __name__ ของโมดูลการเรียกฟังก์ชันใน Python
สมมติว่าmyapp/foo.pyประกอบด้วย: def info(msg): caller_name = ???? print '[%s] %s' % (caller_name, msg) และmyapp/bar.pyประกอบด้วย: import foo foo.info('Hello') # => [myapp.bar] Hello ฉันต้องการcaller_nameตั้งค่าเป็น__name__แอตทริบิวต์ของโมดูลการเรียกฟังก์ชัน (ซึ่งก็คือ 'myapp.foo') ในกรณีนี้ จะทำได้อย่างไร?

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