self
参数先来看个例子:
class Cat:
def eat(self):
print("%s 爱吃鱼" % self.name)
在 Python 中,要 给对象设置属性,非常的容易,但是不推荐使用
tom.name = "Tom"
lazy_cat.name = "大懒猫"
因为:对象属性的封装应该封装在类的内部 只需要在 类的外部的代码 中直接通过 .
设置一个属性即可
注意:这种方式虽然简单,但是不推荐使用!
使用 self
在方法内部输出每一只猫的名字 由 哪一个对象 调用的方法,方法内的 self
就是 哪一个对象的引用 在类封装的方法内部,self
就表示 当前调用方法的对象自己 调用方法时,程序员不需要传递 self
参数 在方法内部 可以通过 self.
访问对象的属性 也可以通过 self.
调用其他的对象方法
改造代码如下:
class Cat:
def eat(self):
print("%s 爱吃鱼" % self.name)
tom = Cat()
# tom.eat()
# 给对象临时增加属性
tom.name = "Tom"
# 现在调用就没问题
tom.eat()
lazy_cat = Cat()
lazy_cat.name = "大懒猫"
lazy_cat.eat()
运行结果如下:
“”"
Tom 爱吃鱼
大懒猫 爱吃鱼
“”"
在 类的外部,通过 变量名. 访问对象的 属性和方法
在 类封装的方法中,通过 self.
访问对象的 属性和方法
在类的外部给对象增加属性
将案例代码进行调整,先调用方法 再设置属性,观察一下执行效果
python tom = Cat()
tom.drink()
tom.eat()
tom.name = "Tom"
print(tom)
# 程序执行报错如下:
# AttributeError: 'Cat' object has no attribute 'name' 属性错误:'Cat' 对象没有 'name' 属性
提示