欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-20 22:52:58
...
# ### 类的封装性
'''
公有的,在类外可以调用类的相关共有属性方法
私有的(前面开头加上__ 两个下划线),在外类不可以调用类内的相关私有属性方法

绑定方法:
	(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()