python-3.x 如果我在类函数中返回一个类示例,它会创建一个新对象,还是返回与该数据关联的现有对象?

wbgh16ku  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(128)

例如:
class DogOwners(object): def get_this_animal(id, dog_name): return Dog(id=id, name=dog_name)
这将返回一个新对象还是与get_this_animal()的 *args关联的现有对象?
它返回我想要的数据,但我不能告诉如果现在我有两个狗相同的数据

fwzugrvs

fwzugrvs1#

它将返回一个具有这些属性的新dog,假设Dog(id=标识符,name =dog_name)是你的构造函数。程序没有办法返回与你所写的属性相同的现有狗。如果你不想创建新的狗,那么你需要存储所有狗的数据,并搜索特定的数据,以确保你返回的是同一只狗。这种存储和搜索可以通过几种方式来完成,比如字典、数组/列表等等(字典可能更适合你要做的事情)。

dsf9zpds

dsf9zpds2#

任何时候运行Dog(...),都是在创建一个新对象(假设你没有对类做任何特殊的操作来改变这个事实)。默认情况下,将类作为函数调用会构造一个新示例。你也可以使用id来检查这一点:

# I added the necessary 'self' parameter, and changed the 'id' parameter
def get_this_animal(self, dog_id, dog_name):
    new_dog = Dog(id=dog_id, name=dog_name)
    print(id(self), id(new_dog))  # These will not be the same
    return new_dog

print将打印两个独立的地址/ID,表明它们是不同的对象。然而,dog_iddog_name对象 * 将 * 是相同的。

相关问题