### ###面向对象oop - 封装
用几大特征表达一类事物称为一个类
对象是类的实例,类是对象的模板
面向对象三大特征: 封装 继承 多态
"""
类中封装了两个
成员属性
成员方法
格式:对象.属性
对象.方法
**私有的属性和方法必须类内调用
"""
class Car():
# 公有成员属性
color = "红色"
#私有成员属性
__logo = "特斯拉"
#成员的方法
def drive(self):
print("我的小车可以泡妹子")
def __info():
print("我的小车油耗是保密的")
obj = Car()
(1)实例化的对象访问公有成员属性和方法
print(obj.color)
调用方法时,系统默认把对象(或者是类)当成参数传递,叫做绑定方法
需要在定义方法时候加入形参self
obj.drive()
(2)实例化的对象动态添加公有成员属性和方法
对实例化对象添加属性或者方法
__dict__查看对象或者类当中的成员,返回一个字典
print(obj.__dict__)
# 添加成员方法
1.动态添加无参数的
def dahuangfeng():
print("王振")
对象.属性 = 方法
obj.dahuagnfeng = dahuangfeng
obj.dahuagnfeng()
2.动态添加有参数的
def qingtianzhu(name):
print("{}大帅哥".format(name))
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu("王振")
改造后 手动传递对象参数
def qingtianzhu(obj,name):
print("{}大帅哥".format(name))
print(obj.color)
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu(obj,"王振")
改造后 系统自动传递对象参数
import types
(需要用到MethodType方法)
def qingtianzhu(self,name):
print("{}大帅哥".format(name))
obj.qingtianzhu = types.MethodType(qingtianzhu,obj)
obj.qingtianzhu("擎天柱")
3.动态添加lambda匿名函数
obj.wezhentian = lambda : print("王振牛皮")
obj.weizhentian()
<--------------------------------------------------------------------------------->
### ### 类的相关操作
class Car():
# 公有成员属性
color = "红色"
#私有成员属性
__logo = "特斯拉"
#成员的方法
def drive(self):
print("我的小车可以泡妹子")
def __info():
print("我的小车油耗是保密的")
obj = Car()
(1)定义的类访问公有成员属性和方法
print(Car.color)
跟用什么去调用没关系,是根据传入类还是对象来决定的
(2)定义的类动态添加公有成员属性和方法
添加成员属性
Car.logo = "兰博基尼"
添加成员方法
1.动态添加公有无参方法
def fangxiangpan():
print("方向盘")
Car.fangxiangpan = fangxiangpan
Car.fangxiangpan()
2.动态添加公有有参方法
def fadongji(dongji):
print("发动机")
Car.fadongji = fadongji
Car.fadongji("无敌发动机")
3.动态添加lambda表达式
Car.luntai = lambda pinpai : print("米其林品牌")
### 类和对象之间的注意点
类中成员只归属于当前类本身
对象可以调用其中的公有成员,但是没有修改和删除的权利
类无法调用对象中的成员,对象可以调用类中的成员
调用对象中的成员时,先看看成员内有没有,有的话调用自己的,没有才调用类的
<---------------------------------------------------------------------------->
#### ### 类中的私有成员
class Car():
# 公有成员属性
color = "红色"
#私有成员属性
__logo = "特斯拉"
def fly(self)
print("汽车飞")
def fly2()
print("汽车人")
def __fly3(self):
print("你是谁")
def __fly4():
print("我是谁")
### 删除相关成员
(1)实例化的对象删除公有成员属性和方法
class Car():
# 公有成员属性
color = "红色"
#私有成员属性
__logo = "特斯拉"
def fly(self)
print("汽车飞")
obj.color = "黑色"
# 删除对象成员属性
del obj.color
这时候再调用成员,就会显示的是类的color
(2)定义的类删除公有成员属性和方法
del Car.color
del Car.fly
<------------------------------------------------------------------------------------>
### ### 魔术方法
# __init__ 魔术方法(又叫做构造方法)
'''
触发时机:实例化对象,初始化的时候触发
功能: 为对象添加成员
参数: 参数不固定,至少一个self参数
返回值: 无
'''
(1)基本语法
class Car():
def __init__(self):
self.name = "王振"
obj = Car()
(2)带有多个参数的构造方法
class Car():
def __init__(self,name):
self.name = name
obj = Car("王振")
(3)类可以是1个,对象可以是多个,可以通过一个类实例化多个不同的对象
每创建一个对象,都会单独占用一个空间,创建的越多,占用的空间越大,对象之间彼此独立
王振2020-5-26笔记
最新推荐文章于 2020-05-29 20:43:41 发布