类的封装性-- | 成员属性 | 成员方法 | 私有属性 | 私有方法 之间调用

# ### 类的封装性
'''
公有的,在类外可以调用类的相关共有属性方法
私有的(前面开头加上__ 两个下划线),在外类不可以调用类内的相关私有属性方法

绑定方法:
	(1) 绑定到对象 (默认系统把对象当成参数传递)
	(2) 绑定到类   (默认系统把类当成参数传递)
	这两个参数,无论哪种,都是系统自己传递的,
	但是参数需要我们自己定义好
'''
class Car():
	# 公有属性
	logo = "特斯拉"
	# 私有属性
	__oil = "2.5L"
	
	# 公有方法
	def run(self):
		print("我的小车会跑")
		
	def jiao(self):
		print("我的%s小车会滴滴滴的叫" % (self.logo))
		
	# 私有方法
	def __oil_info(self):
		print("这是我的私有方法")
		
# 实例化对象
obj = Car()
print(obj)

# 对象的相关操作
# (1)实例化的对象访问公有成员属性和方法
'''
对象.属性
对象.方法()
'''
# 调用公有成员属性
print(obj.logo)
# print(obj.__oil) # 私有的无法在类外调用

# 调用公有成员方法
'''
系统自己会默认的把obj这个对象当成参数进行传递
传递给run这个方法,用self这个参数进行接收
self 这个词约定俗称这么写,是自定义的,代表本对象.
'''
obj.run()
obj.jiao()
# obj.__oil_info() error 私有的不能够在类外调用

# (2)实例化的对象动态添加公有成员属性
obj.color = "屎黄色"
print(obj.color)
# 查看obj这个对象的内部成员,使用__dict__
print(obj.__dict__)
"""
类中得成员属性和方法可以给对象使用,
但是只有使用权,没有归属权,
类里面的成员属性方法只归类所有,
对象只能使用(获取) 不能够修改或者删除.
不归对象所有
"""

# 实例化的对象动态添加公有成员属性方法
# (1) 添加无参方法

def func():
	print("我的汽车会变形,请叫我大黄蜂")

# 把func方法赋值给成员方法bianxing
obj.bianxing = func
obj.bianxing()
print(obj.__dict__)

# (2) 添加有参方法
def qingtianzhu(name):
	print("请叫我"+name)

obj.qingtianzhu = qingtianzhu
obj.qingtianzhu("擎天柱")

# 改造1
def qingtianzhu(self,name):
	print("请叫我"+name,"我的颜色是"+self.color)
	
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu(obj,"大擎天柱")

# 改造2 把qingtianzhu变成绑定方法(系统帮助我们传递对象)
import types
# MethodType(函数,对象) 要把那个函数作为对象的绑定方法
obj.qingtianzhu = types.MethodType(qingtianzhu,obj)
obj.qingtianzhu("大大擎天柱")

# (3) 添加lambda表达式
obj.fangxiangpan = lambda : print("我是制造方向盘的方法")
obj.fangxiangpan()
	
	
	
	
	
	
	

  

猜你喜欢

转载自www.cnblogs.com/huangjiangyong/p/10920546.html