คำถามติดแท็ก language-details

3
ฉันควรใช้ @classmethod เมื่อใดและเมื่อใดที่วิธี def (self)?
ในขณะที่รวมแอพ Django ที่ฉันไม่เคยใช้มาก่อนฉันพบสองวิธีที่แตกต่างกันที่ใช้ในการกำหนดฟังก์ชันในคลาส ผู้เขียนดูเหมือนจะใช้ทั้งสองอย่างตั้งใจมาก คนแรกคือตัวฉันเองใช้บ่อยมาก: class Dummy(object): def some_function(self,*args,**kwargs): do something here self is the class instance อีกอันคืออันที่ฉันไม่ได้ใช้ส่วนใหญ่เป็นเพราะฉันไม่เข้าใจว่าจะใช้เมื่อใดและทำเพื่ออะไร: class Dummy(object): @classmethod def some_function(cls,*args,**kwargs): do something here cls refers to what? ในเอกสาร Python classmethodมัณฑนากรอธิบายด้วยประโยคนี้: เมธอดคลาสได้รับคลาสเป็นอาร์กิวเมนต์แรกโดยนัยเช่นเดียวกับที่วิธีอินสแตนซ์ได้รับอินสแตนซ์ ดังนั้นฉันเดาว่าclsหมายถึงDummyตัวมันเอง ( classไม่ใช่อินสแตนซ์) ฉันไม่เข้าใจว่าทำไมสิ่งนี้ถึงมีอยู่เพราะฉันสามารถทำได้เสมอ: type(self).do_something_with_the_class นี่เป็นเพียงเพื่อความชัดเจนหรือว่าฉันพลาดส่วนที่สำคัญที่สุด: สิ่งที่น่ากลัวและน่าสนใจที่ไม่สามารถทำได้หากไม่มีมัน?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.