zoukankan      html  css  js  c++  java
  • Python【day 17】面向对象-成员

    类的变量分成2种:
    1、成员变量
        概念:在构造方法中的变量,前面带有self
        作用:可以在类中不同的方法间使用
    
    2、类变量-静态变量
        概念:在类中,构造方法和普通方法之外,定义的变量
        作用:
            1、调用
                1、类名可以调用       类名.类变量
                2、对象名也可以调用   对象名.类变量
            2、修改
                1、只能是类名才能修改   类名.类变量 = 类变量的新值
                2、对象名不能修改
                   特别注意:如果用  对象名.类变量=值,这个是对对象新增了一个属性,和类变量没有任何关系
    
    总结:
    1、类变量用类名来操作(访问和修改),比较规范
       类变量就不要用对象名来操作
    2、类变量建议写在类中的构造方法之前,也是规范
    类中的方法分类:
    1、成员方法-实例方法-最常见
        1、写法
            第一个参数是self,对象本身
        2、调用
            对象来调用成员方法
    
    2、静态方法-函数
        1、写法
            1、参数,不需要传self
            2、方法名字前面加上@staticmethod
        2、调用
            类名来调用静态方法
        3、例子
            字典中的fromkeys 就是一个静态方法
        4、适用场景
            当做函数来看
    
    3、类方法
        1、写法
            1、第一个参数是cls,表示类名
            2、方法名上方加上@classmethod
        2、调用
            类名来调用类方法
        3、适用场景
            可以在类方法中创建对象
    类中的属性
    1、概念
        用一个方法的返回值来表示属性
    2、写法
        1、 @property
        2、方法的参数只有一个self
        3、方法必须有返回值 return
    3、调用
        1、对象名.属性名
            注意:属性名就是方法名,属性后面不能加小括号
    4、适用场景
        1、人的年龄就不适合当做成员变量来存储,而应该把生日作为成员变量-字段
        2、但是年龄是人的一个属性,就可以通过生日来换算出来
        3、人的年龄是一个属性,如果通过成员方法-动作来计算也可以,但是用属性-名词更好一些
    5、注意点
        调成员方法和调属性的区别
        1、前者  对象名.成员方法名()  方法名后面有小括号
        2、后者  对象名.属性    属性后面没有小括号
    类中的私有
    1、分类
        私有变量
        私有方法
    
    2、写法
        私有变量:变量名字前面加上__
        私有方法:方法名字前面加上__
    
    3、特点
        1、私有变量:
           对象无法访问私有变量
        2、私有方法:
            对象无法访问私有方法
    
    4、如何访问私有变量和私有方法
        1、对象可以通过调用成员方法,间接访问私有变量
           私有变量只能在自己类中访问
        2、对象可以通过调用成员方法,间接调用私有方法
            私有方法只能在自己类中调用
    
    5、适用场景
        1、用的比较少(私有变量和私有方法,在python中)
    成员
        概念:
            在类中定义的变量和方法都被称为成员
    
        1、变量
            1、成员变量--重点1
                定义:在构造方法中定义的
                别名:实例变量,字段(对应数据表的字段)
                写法:self.变量名
            2、类变量
                定义:在类中,构造方法和普通方法之外定义的变量就是类变量
                写法: 一般是通过类名来调用的  类名.类变量
                别名:静态变量
                特点:共享出去的
    
        2、方法
            1、成员方法--重点2
                定义:类中的普通方法
                写法:默认第一个参数是self
                调用:通过对象来调用
    
            2、类方法
                定义:第一个参数默认是cls,表示类名
                写法:方法名字上一行是@classmethod
                用法:主要用于在类方法中创建对象,设计模式
    
            3、静态方法
                定义:参数没有self,即静态方法不需要传递当前类的对象
                写法:方法名字上一行是@staticmethod
                理解:把静态方法理解成类中的函数就可以了
    
        3、属性
            定义:用方法-动作来描述属性信息
            例子:比如人的年龄,一般都是通过出生日期计算出来的
                1、age用变量定义,会每年都变,不适合
                2、age用普通方法来计算,是可以的
                   但是普通方法一般是一个动作,age是一个属性(名词)
                3、age用属性来表示,比较适合
            写法:
                1、属性的写法和普通方法类似,但是上面需要加一行@property
                2、只有一个参数self
                3、必须有返回值
            调用:对象调用属性的时候,属性名字后面是不加小括号的
                  这一点,和对象调用方法有区别,方法名字后是加小括号的
    
        4、私有
            1、私有变量
                定义:只能在类中使用,对象无法直接访问私有变量
                写法:__变量名,即变量名前面加上双下划线
                用法:对象可以通过调用成员方法,间接访问私有变量
                      成员方法中,私有变量的访问,写法是self.__私有变量
    
            2、私有方法
                定义:只能在类中使用,对象无法直接访问私有方法
                写法:__方法名,即方法名前面加上双下划线
                用法:对象可以通过调用成员方法,间接调用私有方法
                      成员方法中,有私有方法的调用,写法是self.__私有方法名()
  • 相关阅读:
    SQL-W3School-高级:SQL ALIAS(别名)
    SQL-W3School-高级:SQL BETWEEN 操作符
    SQL-W3School-高级:SQL IN 操作符
    SQL-W3School-高级:SQL 通配符
    C语言实现定积分求解方法
    android使用webview上传文件(支持相册和拍照)
    POJ2349+Prim
    nyist 740 “炫舞家“ST(动态规划)
    paip.php eclipse output echo 乱码
    Deep Learning论文笔记之(八)Deep Learning最新综述
  • 原文地址:https://www.cnblogs.com/wangtp/p/11993083.html
Copyright © 2011-2022 走看看