พิจารณารหัสต่อไปนี้:
class Base(object):
@classmethod
def do(cls, a):
print cls, a
class Derived(Base):
@classmethod
def do(cls, a):
print 'In derived!'
# Base.do(cls, a) -- can't pass `cls`
Base.do(a)
if __name__ == '__main__':
d = Derived()
d.do('hello')
> $ python play.py
> In derived!
> <class '__main__.Base'> msg
จากDerived.do
ฉันจะโทรBase.do
อย่างไร?
โดยปกติฉันจะใช้super
หรือแม้แต่ชื่อคลาสฐานโดยตรงหากนี่เป็นเมธอดอ็อบเจ็กต์ปกติ แต่ดูเหมือนว่าฉันไม่สามารถหาวิธีเรียกเมธอดคลาสในคลาสฐานได้
ในตัวอย่างข้างต้นBase.do(a)
พิมพ์Base
คลาสแทนDerived
คลาส
1
ที่เกี่ยวข้อง: จะเรียกเมธอดของคลาสแม่จากคลาสลูกใน python ได้อย่างไร?
—
Piotr Dobrogost