我是否理解Python中实例属性和类属性之间的区别?

我是否理解Python中实例属性和类属性之间的区别?,python,class,methods,instance,Python,Class,Methods,Instance,假设我有一个方法和一个类: def my_method(self): self.mark = 'Knopfler' class MySubclass(object) my_method = my_method 我可以想出3到4种方法在另一个类中使用我的_方法 案例1: 如果我想在另一个类中访问我的_方法,如下所示: class MyClass(object): def __init__(self): self.my_subclass = MySubcl

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

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

class MySubclass(object)
    my_method = my_method
我可以想出3到4种方法在另一个类中使用我的_方法

案例1: 如果我想在另一个类中访问我的_方法,如下所示:

class MyClass(object):
    def __init__(self):
        self.my_subclass = MySubclass()
my_inst = MyClass()
my_inst.my_subclass.my_method()
我是否正确地认为这将允许我在这样的实例上使用我的_方法:

class MyClass(object):
    def __init__(self):
        self.my_subclass = MySubclass()
my_inst = MyClass()
my_inst.my_subclass.my_method()
这似乎和我预期的一样,但如果我这样做: 案例2:

据我所知,前一行将
my_method
应用于
my_inst
my_inst2
。对吗

案例3: 另一种获取my_方法作为MyClass属性的方法是:

class MyClass(object):
    my_method = my_method
据我所知,当我有多个MyClass实例时,应用我的_方法只会影响它绑定到的实例。对吗

案例4(最后一个):

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


嗯。仅此而已。请让我知道这四个案例中哪一个最适合使用。谢谢

根据上一个案例,您可以使用
MethodType
将方法绑定到类实例:

import types

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

根据上一个案例,您可以使用
MethodType
将方法绑定到类实例:

import types

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