python - 有没有办法在 python 中为类的所有实例运行一个方法?

标签 python class methods

示例代码:

>>> class MyClass(object):
        def __init__(self, x, y):
            self.x = x
            self.y = y
        def power(self):
            print(self.x**self.y)
        def divide(self):
            print(self.x/self.y)

>>> foo = MyClass(2, 3)
>>> bar = MyClass(4, 7)
>>> 
>>> foo.power()
8
>>> bar.divide()
0.5714285714285714

每当我以前在 Python 中使用类时,我只是分别为每个实例运行方法(见上文)。我只是想知道是否有一种方法可以同时为该类的所有实例运行相同的方法,因为如果您有 20 个左右的实例,这可能会有点烦人。我在想这样的事情:

>>> allinstances.power()
8
16384

有没有办法做到这一点?

最佳答案

class MyClass(object):

    instancelist = []

    def __init__(self, x, y):
        self.x = x
        self.y = y
        MyClass.instancelist.append(self)

    def power(self):
        print(self.x ** self.y)

    def divide(self):
        print(self.x / self.y)


foo = MyClass(2, 3)
bar = MyClass(4, 7)

[instance.power() for instance in MyClass.instancelist]

将输出:

8
16384

这样您就不需要存储在类定义之外的任何全局变量或占位符。

关于python - 有没有办法在 python 中为类的所有实例运行一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20020652/

相关文章:

Python - for 循环内的 if 和 else 且 count 不起作用

python - Python 中的表单生成/验证库

c# - 多态性不适用于 C# 中泛型类的调用

python - 在 python 类上覆盖 __dict__()

java - 如何在类中设置列表<Class> (Java)

c++ - 空类方法实现

python - 解析 Python 字典键

python - Scrapy 隐藏的内存泄漏

c# - 获取调用方法的方法?

java - Java中的静态方法可以使用对象实例来访问