在Python中,一个已经创建好的对象,能否像“临时贴标签”一样,随时给它添加新的特征(比如给学生对象临时加一个“宿舍号”属性)?这些临时添加的属性,会被同类对象共享吗?
在Python中,任何一个对象都应该由两部分组成:属性 + 方法
属性即是特征,比如:
人的姓名、年龄、身高、体重…都是对象的属性。
车的品牌、型号、颜色、载重量...都是对象的属性。
对象属性既可以在类外面添加和获取,也能在类里面添加和获取。
# 1、定义一个Person类class Person(): pass# 2、实例化Person类,生成p1对象p1 = Person()# 3、为p1对象添加属性p1.name = '老王'p1.age = 18p1.address = '北京市顺义区京顺路99号'
在python中,获取对象属性的方法我们可以通过对象名.属性来获取
# 1、定义一个Person类class Person(): pass# 2、实例化Person类,生成p1对象p1 = Person()# 3、为p1对象添加属性p1.name = 'ooaac'p1.age = 20p1.address = '广东省广州市'# 4、获取p1对象的属性print(f'我的姓名:{p1.name}')print(f'我的年龄:{p1.age}')print(f'我的住址:{p1.address}')
# 定义一个Person类class Person(): def speak(self): print(f'我的名字:{self.name},我的年龄:{self.age},我的住址:{self.address}')# 2、实例化Person类,生成p1对象p1 = Person()# 3、添加属性p1.name = '孙悟空'p1.age = '500'p1.address = '花果山水帘洞'# 4、调用speak方法p1.speak()
遗留一个问题:
目前我们的确可以通过对象.属性的方式设置或获取对象的属性,但是这种设置属性的方式有点繁琐,每次定义一个对象,就必须手工设置属性,在我们面向对象中,对象的属性能不能在实例化对象时,直接进行设置呢?
答:可以,但是需要使用魔术方法
今日学习完毕,课后作业:
学生信息动态管理,题目要求:
(1)创建一个空的类 Student。
(2)动态地为这个类的一个实例(对象)添加以下两个属性:
name(姓名),值为 "小明"
age(年龄),值为 15
(3)编写代码,检查该对象是否拥有 name和 grade属性。
(4)最后,获取并打印出 name和 age属性的值。对于不存在的 grade属性,在尝试获取时给出一个默认提示,例如 "属性不存在"。