zoukankan      html  css  js  c++  java
  • python3之面向对象编程理解

    面向对象主要有三个特征:封装,继承,多态度。

    一.封装

    定义类语


    class Animal():

    class为定义类的关键字,后面跟名字():

    python命名规范建议:类一般首字母单词大写,属性变量,函数首单词字母小写


    定义一个类叫Animal,相关代码:
    class Animal():
        ##类里定义的属性称为类属性
        count=0
        ##构造函数,实例化的时候会自动调用该函数
        def __init__(self,name,age,sex):
            ##构造函数里定义的字段称为实例属性
            self.name=name
            self.age=age
            self.sex=sex
    
            print('名字叫:'+self.name+',年龄'+str(self.age)+'岁,性别品种是:'+self.sex)
            print('当前动物数量:'+str(self.__class__.count))
    
    if __name__ == '__main__':
        ##实例化Animal
        a1=Animal('狮子',2,'')

    这里name,age,sex为实例属性,通过类在实例化的时候赋值,count为类属性,可通过类名.属性名的方式赋值

    上面代码运行结果:

    这里来改写下代码,在构造函数里加上代码:

    self.__class__.count+=1

    运行结果:

    1.1类属性和类实例属性

     这里发现类属性count字段存储的数据是全局,每次实例化对象的时候值都是在之前基础上相加,而没有被销毁。

    类属性和类实例属性最大的区别就是:

    类属性字段的值不会因为类的实例化而丢失,是全局保存的

    类实例属性:只有每次实例化类对象赋值的时候才有值,不是全局保存的。

    查看解释器里生成的雷属性代码;类名.__dict__

    1.2类函数

    语法: def detail_info(self):

    def 后面跟函数名称,self为必须函数,这里也可能用别的名称,但为了命名统一,这里推荐用self

    改写后方法:

     实例化对象可直接调用

    1.3,私有属性,函数

    在Java和c#里私有,公有都用private,public表示,但在python里没有这两个关键字,python里在属性或者函数名加__表示私有,则只能在类的内部访问,其他地方则无法访问

    将函数detail_info改为私有私有函数

    运行结果

    发现这里提示找不到__detail_info函数,这里就表示私有函数起作用了

    实例方法

        定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);

        调用:只能由实例对象调用。

    类方法

        定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);

        调用:实例对象和类对象都可以调用。

    静态方法

        定义:使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,但是方法体中不能使用类或实例的任何属性和方法;

       

    二。继承

    python里支持单根继承,多继承

    相关语法

    super为关键字,调用父类构造函数。

  • 相关阅读:
    团队项目 第一次作业
    20165201 课下作业第十周(选做)
    20165201 实验三敏捷开发与XP实践
    20165201 2017-2018-2 《Java程序设计》第9周学习总结
    20165201 结对编程练习_四则运算(第二周)
    20165201 2017-2018-2 《Java程序设计》第8周学习总结
    20165201 实验二面向对象程序设计
    20165326 java实验五
    20165326 课程总结
    20165326 java实验四
  • 原文地址:https://www.cnblogs.com/dongml/p/10921035.html
Copyright © 2011-2022 走看看