我寫了下面的代碼,以幫助執行的某些方法的定義爲一類:A類強制實施方法定義
def createClassTemplate(name, requiredMethods=[], inherits=object):
def require(name):
def errorRaiser(self, *args, **kwargs):
raise RequireException("method '{}' must be defined.".format(name))
setattr(wrapper, "__name__", name)
return errorRaiser
class Custom(inherits): pass
setattr(Custom, "__name__", name)
for methodName in requiredMethods:
setattr(Custom, methodName, require(methodName))
return Custom
它是這樣實現的:
Model = createClassTemplate("Model", ["foo", "bar", "baz"])
class MyClass(Model):
pass
這樣,當我缺少一個方法時,調用類將生成一個有意義的錯誤,指示我未能定義所需的方法。
問題是,上面的代碼似乎不舒服,hacky和unpythonic。我正在做這個正確的方式嗎?我是否應該強制這樣的類模板?有沒有更好的方法來完成同樣的事情?
顯然,我可以花更多時間閱讀文檔 - 感謝您提供全面的答案。 –