Python_05_面向对象

一、面向过程与面向对象:

面向过程:
优点:将复杂问题流程化,进而简单化
缺点:可扩展性差
如果需要处理任务比较复杂,且不断更新和维护,则需要使用面向对象的方式
面向对象:对现实世界的模拟
特点:可以编写真是世界中的事物和情景类,并基于这类来创建对象
优点:使程序维护和扩展更加简单,大大提高程序开发效率
面向对象三大特征:封装、继承、多态

二、创建简单的类:

  类:描述具有相同特征和行为的对象的集合
        通过变量,刻画类的特征;通过方法,描述类的行为
    对象:类实例化后,可生成一个或者多个对象
    class 类名():                --大驼峰
        变量                     --刻画类的特征
        def 相关方法名(self,相关参数): --描述类的行为
            pass
    举例:
    class Man():    
        gender='male'
        avg_height=1.7
                             
        def think(self):       #实例化方法
            print('thinking')
        def sleep(self):       #实例化方法
            print('sleeping')
    注意:类可以去定义,但不负责执行相关的方法
        实例化方法:类实例化后的对象能够使用的方法
        

三、self与实例方法

1、类的实例化
man1=Man()
2、对self进行说明
self的名称是约定俗成的
self指向的是类实例化后的对象本身
self只有在类的方法中才会有,函数是不必带self的
self在定义类的方法(实例方法)时是必须的
self在调用时不必传入相应的参数
3、调用实例化方法:
man1.sleep()
man1.think()

四、__init__构造方法

 引入:生成对象特征比较抽象,只有类的通俗特征(male 1.7)没有具体特征
    使用构造函数可以让模板(类)生成不同特征的对象
        举例:
    class Man():    
        gender='male'            # 类变量 描述类的通俗特征
        avg_height=1.7
        
        def __init__(self,name,age):  #构造函数,可初始化对象特征,保存对象特征
            
            self.name=name        #实例变量 保存对象的具体特征
            self.age=age
                             
        def think(self):     
            print('thinking')
        def sleep(self):       #实例化方法
            print('sleeping')
        
    man2=Man('小明',18)
    man2.name
    man2.age
    man2.__dict__

五、通过实例方法访问实例变量与类变量

类变量 描述类的通俗特征,只与类有关 如:性别,平均身高
 实例变量 刻画对象具体特征,只与实例化后的对象有关 如:姓名 年龄
 访问类变量:
    方式一:print(self.__class__.gender)
    方式二:print(Man.gender)
    方式三:print(self.gender)
访问实例变量:
    man2.name
    man2.age
    man2.sleep(self)
    man2.think(self)

六、类方法??

  使用类方法操作与类相关的特征
    如修改平局身高增加0.05
    @classmethod            #声明类方法
    def modify_height(cls,height):
        cls.avg_height+=height
        print('success,now the avg_height is'+str(cls.avg_height))

七、静态方法

 与普通方法没有什么区别
   静态方法与类、对象没有太大关系时候,可以使用该方法
    @staticmethod            #声明静态方法
    def plus_num(x,y):
        return x*y
        
    man2.plus_num(2,3)

八、成员可见性

  pubic 公开性
    private 私有
    举例:
    class Man():    
        gender='male'            #类变量 
        avg_height=1.7
        
        def __init__(self,name,age):  #构造方法
            
            self.name=name        #实例变量 
            self.__age=age        #私有变量
                             
        def think(self):         #实例化方法
            print('thinking')
        def __sleep(self):       #私有方法
            print('sleeping')
         
        @classmethod             #类方法
        def modify_height(cls,height):
            cls.avg_height+=height
            print('success,now the avg_height is'+str(cls.avg_height))
        
        @staticmethod            #静态方法
        def plus_num(x,y):
            return x*y
            
        访问私有变量、私有方法
        man3=Man('bob',8)
        man3._Man__age 
        man3._Man__sleep()
        

九、继承/super关键字调用父类方法

  通过继承,子类可以直接使用父类的功能,减少重复代码
    举例:
    class ChineseMan(Man):   #ChineseMan子类继承Man父类 
        pass
    通过继承,子类可以扩张父类的相关功能,增加代码灵活性
    class ChineseMan(Man):
        def __init__(self,name,age,weight): 
             
            self.weight=weight       
            super(ChineseMan,self).__init__(name,age)                 
        def think(self):   
            super(ChineseMan,self).think()     
            print(self.name+'thinking')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值