类的变量分成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.__私有方法名()

Python【day 17】面向对象-成员的更多相关文章

  1. python --- 17. 面向对象成员

    面向对象的成员 能写的所有成员 一.变量 1.实例变量 访问时      对象.变量 2.类变量 访问时     类名.变量 注意: 二.方法 1.实例方法 必须有一个参数(self) 调用时    ...

  2. python之路--面向对象-成员

    一 . 成员 在类中你能写的所有内容都是类的成员 class 类名: # 方法 def__init__(self, 参数1, 参数2...): # 属性变量 self.属性1 = 参数1 self.属 ...

  3. Python学习 :面向对象 -- 成员修饰符

    成员修饰符 两种成员 - 公有成员 - 私有成员, __字段名 - 无法直接访问,只能通过内部方法来间接访问私有成员 简例:公有成员与私有成员  class Info: country = '中国' ...

  4. python day - 17 面向对象的 类空间 和 组合

    1. 类命名空间 在类的代码中,当python 解释器在 运行的那一刻.就会在内存中开辟一个类空间,在类的空间中会加载静态变量,以及类方法的内存地址. 当类名+()(也就是实例化过程中),内存中会再次 ...

  5. 第四篇:python 高级之面向对象初级

    python 高级之面向对象初级   python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 ...

  6. python基础,函数,面向对象,模块练习

    ---恢复内容开始--- python基础,函数,面向对象,模块练习 1,简述python中基本数据类型中表示False的数据有哪些? #  [] {} () None 0 2,位和字节的关系? # ...

  7. 面向对象相关概念与在python中的面向对象知识(魔法方法+反射+元类+鸭子类型)

    面向对象知识 封装 封装的原理是,其成员变量代表对象的属性,方法代表这个对象的动作真正的封装是,经过深入的思考,做出良好的抽象(设计属性时用到),给出“完整且最小”的接口,并使得内部细节可以对外透明( ...

  8. python 高级之面向对象初级

    python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开 ...

  9. python高级之面向对象高级

    python高级之面向对象高级 本节内容 成员修饰符 特殊成员 类与对象 异常处理 反射/自省 单例模式 1.成员修饰符 python的类中只有私有成员和公有成员两种,不像c++中的类有公有成员(pu ...

  10. 【循序渐进学Python】7.面向对象的核心——类型(上)

    我们知道Python是一门面向对象的脚本语言.从C#的角度来看:首先Python支持多继承.Python 类型成员通常都是public的,并且所有成员函数都是virtual的(可以直接重写). 1. ...

随机推荐

  1. Sqlite-net 修改版 支持中文和CodeFirst技术

    最近, 做的一个windows 桌面WPF程序, 需要数据库支持.尝试了 sql server 的开发版,使用EF , 效率太低.后来采用sqlite数据库,中间踩坑无数.但最终完美的解决了这些问题. ...

  2. Python的小数据存储,用什么格式更有逼格?

    小数据存储 我们在编写代码的时候,经常会涉及到数据存储的情况,如果是爬虫得到的大数据,我们会选择使用数据库,或者excel存储.但如果只是一些小数据,或者说关联性较强且存在存储后复用的数据,我们该如何 ...

  3. zabbix snmp监控与主被模式

    1.snmp基础介绍 snmp全称是简单网络管理协议 为什么要用? 路由器交换机无法安装agent程序,但是都提供snmp服务端, 我们可以使用zabbix的snmp方式监控snmp服务端的数据 2. ...

  4. Cesium专栏-气象卫星云图动图(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  5. Java - IO 内存流和打印流

    IO 内存流和打印流操作 字符编码 计算机中所有的信息组成都是二进制数据,所有能够描述的中文文字都是经过处理后的结果:所有的语言文字都会使用编码来进行描述,例如:ASCII码 常见编码 GBK/GB2 ...

  6. UI视图控件、视图嵌套、SubView、Tag 的使用

    - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchO ...

  7. Android 亮度调节功能开发思路整理

    做 Android 音视频播放器开发的时候,我们基本都会遇到一类需求:音量 & 亮度 调节.其中做亮度调节功能的时候,发现还是有一定复杂度的. Android亮度调节分为两个类,分别是: An ...

  8. IDEA org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    引用地址:https://guozh.net/idea-org-apache-ibatis-binding-bindingexception-invalid-bound-statement-not-f ...

  9. bay——RAC 关闭和启动顺序,状态查看.txt

    oracle 11g rac 关闭和启动顺序,状态查看https://www.cnblogs.com/hellojesson/p/4501112.html----------------------- ...

  10. 在没有备份的情况下重新创建丢失的数据文件 (Doc ID 1149946.1)

    Recreating a missing datafile with no backups (Doc ID 1149946.1) APPLIES TO: Oracle Database - Enter ...