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


    # ### 类的封装性
    '''
    公有的,在类外可以调用类的相关共有属性方法
    私有的(前面开头加上__ 两个下划线),在外类不可以调用类内的相关私有属性方法
    
    绑定方法:
    	(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()
    	
    	
    	
    	
    	
    	
    	
    

      

  • 相关阅读:
    获取Tekla属性方式
    基于C# 百度AI和科大汛飞语音合成SDK
    BIM工程信息管理系统-EF实体框架数据操作基类
    BIM工程信息管理新系统- 系统管理模块
    EChart绘制风速风向曲线分析图
    BIM工程信息管理系统-详细设计
    BIM工程信息管理系统搭建-系统功能需求
    基于C# 调用百度AI 人脸识别
    mago3DJS 应用
    Bitnami redmine windows环境下升级
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10920546.html
Copyright © 2020-2023  润新知