【发布时间】:2019-04-25 18:50:52
【问题描述】:
我知道在 python 中,方法与类关联而不是实例,但它们接受实例作为第一个参数以便访问它。但是,仍然可以定义一个函数并将其直接绑定到一个实例。这意味着什么?这个函数能以某种方式访问实例吗?
class TestClass:
def __init__(self, a):
self.a = a
def method1(self):
return self.a
my_obj = TestClass(12)
print(my_obj.method1()) // 12
Python 也允许这样做:
class TestClass:
def __init__(self, a):
self.a = a
my_obj = TestClass(12)
def method1_defined_outside(self):
return self.a
TestClass.method1 = method1_defined_outside
print(my_obj.method1()) // 12
上面的两个sn-ps是同一个意思。 但python也允许这样做:
class TestCase:
def __init__(self, a):
self.a = a
my_obj = TestCase(12)
def method1_defined_outside(self):
return self.a
my_obj.method1 = method1_defined_outside
print(my_obj.method1()) // this throws an error stating the method1 is missing one postional argument(s), so clearly self does not automatically equate to the object
第二个sn-p和第三个sn-p的区别在于,外部定义的方法绑定到后者的实例,而绑定到前者的类。
【问题讨论】:
标签: python python-3.x function class self