python 3 : Adding function to a already created object

标签 python function class python-3.x methods

我想给一个类添加一个函数,它应该适用于该类中的所有对象,如果它们是以前创建的。但是我不知道已经创建的对象的名称。

class Dog(object):
"""This is a simple test"""
i = 1234
def f(self):
    return 'hello world'

如果我想为类 Dog 实现一个函数 bark 并且已经创建的 Dogs 可以“使用”这个函数,我该怎么做?

之前在网上搜索发现

a = Dog()
a.bark = types.MethodType(...)

但我不能使用它,因为我不知道对象的名称。也许您可以通过某种方式从类中找出对象的名称。

你能帮帮我吗?

谢谢!无抗体

最佳答案

你是对的,a.bark 修改了 Dog 的特定实例,而不是类本身。

如果你想修改 Dog 类,那么你应该找到谈论这个类的变量。幸运的是,该变量以类本身的名称方便地命名(就像 python 中的任何类一样),因此可以使用变量名 Dog 进行访问。

所以,如果你这样做

Dog.bark = types.MethodType(...)

这将更改 Dog 类,使 bark 可用于 Dog 的所有实例(无论它们在您进行此更改之前是否存在)

关于 python 3 : Adding function to a already created object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35995385/

相关文章:

python - 将 f.write 文件保存到与找到的 Askopenfilename 相同的目录中

python - 我怎样才能将列表另外压缩到已经压缩的列表中?

linux - Bash - 创建 'goto' 等价物的问题

php - 函数多次只返回一个值

c++ - 如何在不使用STL的情况下在C++中编写动态异构集合?

angular - 函数实现丢失或没有紧跟在声明之后,TypeScript 类

java - 在java中,我总是需要一个Main类吗?

参数数量可变的Python函数字典

function - F# 将(自定义)类型分配给函数

python - 在 Python 的袖扣中使用带键的列表以获得最佳拟合线