ฉันกำลังพยายามพิมพ์ชื่ออินสแตนซ์ของคลาส ในตัวอย่างนี้ เป็นตัวจับเวลาที่จะพิมพ์ว่าส่วนต่างๆ ที่ทับซ้อนกันในโค้ดของฉันทำงานนานแค่ไหน:
class timerstart:
def __init__(self):
# Sets some variables with system time
def stop(self):
# Calculates current total time
print(*instance name*, 'total time is ...')
ดังนั้นเมื่อฉันเรียกมันในโค้ดของฉัน มันจะมีลักษณะดังนี้:
allcode=timerstart()
# some code
subcode=timerstart()
# some code
subcode.stop()
# some code
allcode.stop()
ซึ่งจะส่งออก:
subcode total time...
allcode total time...
ฉันรู้ว่าฉันสามารถเริ่มต้นฟังก์ชันด้วยชื่อของมันได้: allcode=timerstart(name='allcode')
ซึ่งน่ารำคาญ
ฉันยังประสบปัญหาเกี่ยวกับการย้อนกลับโดยใช้: inspect.currentframe().f_back.f_locals.items()
มีวิธีพิมพ์ชื่ออินสแตนซ์เช่น print(self.selfname)
หรืออะไรสักอย่างหรือไม่?
timerstart
เป็นตัวจัดการบริบทอยู่ดี เพื่อที่คุณจะได้เขียนwith timerstart("allcode"): ...
ได้ เนื้อความของคำสั่งwith
จะกำหนดขอบเขตของบล็อกที่จะกำหนดเวลา แทนที่จะจบลงด้วยการเรียกstop
อย่างชัดเจน - person chepner   schedule 04.12.2019