一、在类的外部增加属性
方式: 对象名.属性名=值
注意:这种方式虽然简单,但是不推荐使用
class Person:
def eat(self):
print(self.name,'吃...')
person=Person()
person.name='zs' 给对象person又添加了一个name属性
person.eat() # zs 吃...
二、init()方法
init()内置方法在创建对象的时候自动执行。
我们可以在 init()中做一些初始化操作。
练习1:创建Cat类,在 init()方法中初始化name属性的值
class Cat:
def __init__(self,name):
print('init方法在创建对象时执行')
self.name=name #此方法执行完后,name被初始化,如果引用name将找不到该变量,需要给对象添加一个name属性
def eat(self):
print('猫吃老鼠...')
print(self.name)
bule_cat=Cat('蓝猫')
bule_cat.eat()
black_cat=Cat('黑猫')
black_cat.eat()
运行结果:
init方法在创建对象时执行
猫吃老鼠...
蓝猫
init方法在创建对象时执行
猫吃老鼠...
黑猫
三、str()方法
打印对象的名称时默认调用的是__str__()方法,此方法默认返回的是对象的内存地址。
我们可以重写 str() 方法打印对象保存的信息。
class Cat:
def __init__(self,name):
print('此方法创建时将会执行')
self.name=name
def eat(self):
print('虹猫蓝兔七侠传')
print(self.name)
bule_cat=Cat('蓝猫淘气三千问')
bule_cat.eat()
print(bule_cat) #打印的是bule_cat的id地址
运行结果:
此方法创建时将会执行
虹猫蓝兔七侠传
蓝猫淘气三千问
<__main__.Cat object at 0x000000000280D1D0>
加入__str__方法之后
class Cat:
def __init__(self,name,age):
print('此方法创建时将会执行')
self.name=name #创建self.name属性
self.age=age #创建self.age属性
def eat(self):
print('虹猫蓝兔七侠传')
print(self.name)
def __str__(self):
msg='{}是我童年的记忆,已经过去{}年了'.format(self.name,self.age)
return msg 注意返回值,由bule_cat接收
bule_cat=Cat('蓝猫淘气三千问',20)
bule_cat.eat()
print(bule_cat)
运行结果:
此方法创建时将会执行
虹猫蓝兔七侠传
蓝猫淘气三千问
蓝猫淘气三千问是我曾经的记忆,已经过去20年了