|
发表于 2024-4-19 13:34:18
|
显示全部楼层
当我们在类中定义方法时,通常会使用self参数来表示实例对象本身。通过self参数,我们可以访问和操作实例对象的属性。在方法内部,可以使用self.attribute的方式来访问类的属性。
下面我们来演示一下为什么使用函数传参方式调用实例方法时不能间接访问类属性:
- class Person:
- def __init__(self, name, age):
- self.name = name
- self.age = age
- def shilifangfa(self, p):
- print(f"传入的参数是:{p}")
- # 通过self访问类属性
- print(f"类属性age的值是:{self.age}")
复制代码
现在我们创建一个Person对象,并尝试用函数传参方式调用实例方法:
- p = Person("小明", 18)
- person.shilifangfa(p)
复制代码
这样调用会报错,提示没有age属性,原因是我们在调用方法时,将实例对象p作为参数传递给了方法。在方法内部,p会被赋值给self,所以`shilifangfa(self, p)`相当于`shilifangfa(p, p)`。这样,self就指向了p对象,而p对象没有age属性,因此会报错。
正确的方法调用方式是直接使用实例对象调用方法,不需要显式地传递任何参数:
这样就能够正确访问和操作实例对象中的类属性。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|