王振2020-5-26笔记

### ###面向对象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,对象可以是多个,可以通过一个类实例化多个不同的对象
每创建一个对象,都会单独占用一个空间,创建的越多,占用的空间越大,对象之间彼此独立






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值