gpt4 book ai didi

python - 从 parent 实例化 child

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:45 25 4
gpt4 key购买 nike

是否可以在不具体传递子类名的情况下从父类实例化子类的实例?

在 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 类的实例,具体取决于调用它的对象。

或者这种方法太可怕了,不应该采用?

谢谢。

最佳答案

你不需要在 python 中为此做任何特殊的事情。

class DatabaseObject:
@classmethod
def findByID(self, ID):
# whatever
return self()

class Question(DatabaseObject):
tableName = 'questions'

class Answer(DatabaseObject):
tableName = 'answers'

print Question.findByID(5) # <__main__.Question instance at 0x109b1d638>
print Answer.findByID(5) # <__main__.Answer instance at 0x109b1d638>

关于python - 从 parent 实例化 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com