子のクラス名を具体的に渡さずに、親から子クラスのインスタンスをインスタンス化することは可能ですか?
PHPでは次のようなことができます
$instance = new static;
Pythonで同様の結果を得るにはどうすればよいですか?
class DatabaseObject:
@classmethod
def findByID(caller, ID):
query='SELECT * FROM {} LIMIT 1'.format(caller.tableName)
#dostuff
return Instance(stuff) #return the instance of the class that called this method
class Question(DatabaseObject):
tableName='questions'
class Answer(DatabaseObject):
tableName='answers'
q = Question.findByID(5)
a = Answer.findByID(5)
したがって、この例では、findByIDメソッドが返すのは、どちらが呼び出されたかに応じて、QuestionクラスまたはAnswerクラスのインスタンスです。
それとも、このアプローチはひどいものであり、実行すべきではありませんか?
ありがとう。