什么是成员对象
- 一个对象通过实例化后,那么在类中定义的属性和方法,可以使用实力化的对象进行操作
- 类中定义的属性也称为 成员属性
- 类中等于的方法,也可称为成员方法
1一个类可以实例化多个对象
class Cart():
color = '白色' # 表示颜色的属性
barnd = 'AoDi' # 品牌属性
pailing = 3.4 # 排量属性
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
def doufeng(self):
print("可以兜风")
a = Cart()
b = Cart()
print(a) #<__main__.Cart object at 0x000001A91FBE6640>
print(b) #<__main__.Cart object at 0x000001A91FC17A00>
- 上面a和b变量都是对象,也都是通过Cart类实例化处理的对象
2.对象的成员操作:分为2部分 1是: 在类外部,使用对象操作成员 2是:通过对象访问类中的方法(函数)
1. 在类外部,使用对象操作成员
1.访问成员属性,先访a自身的color属性,如果没有,会访问这个a对象Cart类的color属性
class Cart():
color = '白色' # 表示颜色的属性
barnd = 'AoDi' # 品牌属性
pailing = 3.4 # 排量属性
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
a = Cart()
b = Cart()
#当访问成员属性时,先访a自身的color属性,如果没有,会访问这个a对象Cart类的color属性
res = a.color
print(res)
E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
白色
2修改属性的值,实际上等于给对象创建了一个a对象自己的color属性
class Cart():
color = '白色' # 表示颜色的属性
barnd = 'AoDi' # 品牌属性
pailing = 3.4 # 排量属性
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
a = Cart()
b = Cart()
a.color = "黑"
print(a.color)
E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
黑
3给对象添加属性 : 给当前a对象创建了自己独有的属性
注意: 此时name的属性,只属于a对象
class Cart():
color = '白色' # 表示颜色的属性
barnd = 'AoDi' # 品牌属性
pailing = 3.4 # 排量属性
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
a = Cart()
b = Cart()'
#改对象a增加了自己独有的属性 name
a.name = 'A6'
print(a.name)
E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
A6
4删除对象属性
注意: 删除属性的时候,只能删除对象当前自己的属性 包含给对象添加和修改的属性,都可以删除
*
class Cart():
color = '白色' # 表示颜色的属性
barnd = 'AoDi' # 品牌属性
pailing = 3.4 # 排量属性
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
a = Cart()
b = Cart()
a.name = 'A6'
del a.barnd #报错del a.barnd AttributeError: barnd #brand属性不能删除,因为 barnd属性是 Cart类的,
del a.name #name属性可以删除, 因为 name属性是后来给a对象单独添加的name属性,
2 ,通过对象访问类中的方法(函数)
1.访问对象的方法: 如果a对象没有自己的独立方法,那么会访问这个对象的类的方法
class Cart():
# 属性 == 特征 ==变量
color = '白色' # 表示颜色的属性
barnd = 'aodi' # 品牌属性
pailing = 3.4 # 排量属性
# 方法 == 功能 == 函数
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
res = Cart()
a = Cart()
res.lahuo()
E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
可以拉货
2 修改对象方法,
#修改a对象的方法,给这个对象的方法重新定义 ??????给Cart类的 lahuo方法重新赋值一个func方法
def func():
print("这是一个新方法")
a.lahuo = func #把一个函数赋值给成员
a.lahuo()
E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
这是一个新方法
3 添加新的方法,
class Cart():
# 属性 == 特征 ==变量
color = '白色' # 表示颜色的属性
barnd = 'aodi' # 品牌属性
pailing = 3.4 # 排量属性
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
a = Cart()
def func():
print("这是1个新方法")
a.lahuo = func #把一个函数赋值给成员
# 添加新方法: 给这个对象自己新创建的方法
a.func2 = func
a.func2()
4.删除方法
class Cart():
# 属性 == 特征 ==变量
color = '白色' # 表示颜色的属性
barnd = 'aodi' # 品牌属性
pailing = 3.4 # 排量属性
def lahuo(self):
print("可以拉货")
def laren(self):
print("可以拉人")
a = Cart()
def func():
print("这是1个新方法")
# 添加新方法func: 给对象a自己新创建的方法.是a独有的方法
a.func2 = func
#删除 可以删除当前对象自己的方法
del a.func2 #可以删除
del a.lahuo #不可以删除,对象的类的方法
3总结
一个类定义类成员属性和成员方法, 那么通过这个类实例化的对象,也具备这些方法和属性吗 ?
- 实际上,创建对象的时候,并不会把类中的属性和方法复制一份给对象,而是在对象中引用父类的方法
- 因此,在访问对象的属性时,会先找对象自己的属性,如果没有就去找这个类的属性和方法
- 一个对象有类创建后,是一个独立的对象,会引用父类的属性和方法
- 如果在创建后,给对象的属性和方法,进行修改或添加,那么等于给这个对象创建了一个自己的属性和方法,
- 所以在删除时,只能删除对象被修改或者添加的成员