İşte benim tahminim, hangi işe yaramıyor:Bir python temel sınıfı, bir alt sınıfın yöntemlerini geçersiz kıldığını nasıl anlayabilir?
class BaseClass(object):
def foo(self):
return 'foo'
def bar(self):
return 'bar'
def methods_implemented(self):
"""This doesn't work..."""
overriden = []
for method in ('foo', 'bar'):
this_method = getattr(self, method)
base_method = getattr(BaseClass, method)
if this_method is not base_method:
overriden.append(method)
return overriden
class SubClass(BaseClass):
def foo(self):
return 'override foo'
o = SubClass()
o.methods_implemented()
İdeal olarak, method_implemented() ['foo'] 'u iade ederdi.
Nasıl?
(Neden bunu yapmak isterdim? Temel sınıfım, GET, POST vb. yöntemleri olan bir HTTP Kaynak sınıfıdır. Varsayılan olarak, 405 Yöntemi Uygulanmadı. Ayrıca, 200 yanıt vermesi gereken bir yöntem SEÇENEKLERİ vardır. üstbilgiler ile Alt sınıfın uygulayacağı yöntemlere izin ver.)
Bu neden bir topluluk vikisidir? –
Bunu neden yapmak istediğinize emin değilsiniz. Herhangi bir sınıf hiyerarşisinde, bir temel sınıfın türetilmiş sınıflar hakkında bir şey bilmesi gerekmemelidir. Bu gerekliyse, ** belki ** tasarımınızın yeniden gözden geçirilmesi gerekir. – Steg
Buna katılıyorum wiki olmamalı: çalışır ve kabul edilebilir bir cevap olacaktır. Ayrıca, bunu neden yapmak istediğiniz hakkında daha fazla şey duymak isterim, bunu yapmamanız gerekmiyordu, ama bu çözümlerden birinin, başka bir yerde daha iyi ve çok farklı bir çözümü olan bir soruna benzemesi nedeniyle. –