我了解Python中实例属性和类属性之间的区别吗?

2024-10-08 20:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个方法和一个类:

def my_method(self):
    self.mark = 'Knopfler'

class MySubclass(object)
    my_method = my_method

我可以想出3到4种方法在另一个类中使用我的方法。在

案例1: 如果我想在类似这样的另一个类中访问我的\u方法:

^{pr2}$

我是否正确地认为这将允许我在如下实例上使用我的\u方法:

my_inst = MyClass()
my_inst.my_subclass.my_method()

这看起来像我期望的那样工作,但是如果我这样做: 案例2:

class MyClass(object):
    my_subclass = MySubclass

my_inst = MyClass()
my_inst2 = MyClass()
my_inst.my_subclass.my_method()

据我所知,前一行将my_method应用于my_inst和{}。对吗?在

案例3: 另一种方法是将mymethod作为MyClass的属性:

class MyClass(object):
    my_method = my_method

据我所知,当我有多个MyClass实例时,应用我的方法只会影响它绑定到的实例。对吗?在

案例4(最后一个):

class MyClass(object):
    def __init__(self):
        self.my_method = my_method

最后一个方法的问题是,它似乎将我的方法创建为一个未绑定的方法,这不适合我的需要。有没有办法在类定义中添加现有方法作为绑定实例方法?在

好吧。仅此而已。请告诉我这四种情况中哪一种最适合使用。谢谢。在


Tags: 实例方法selfobjectmydefmyclassmethod
1条回答
网友
1楼 · 发布于 2024-10-08 20:21:23

对于上一个例子,可以使用MethodType将方法绑定到类实例:

import types

class MyClass(object):
    def __init__(self):
        self.my_method = types.MethodType(my_method, self)

相关问题 更多 >

    热门问题