位置: 编程技术 - 正文

关于Python面向对象编程的知识点总结(python中面向对象的概念)

编辑:rootadmin

推荐整理分享关于Python面向对象编程的知识点总结(python中面向对象的概念),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python关于面向对象,python中面向对象编程,python中面向对象的概念,python面向对象和面向过程举例,关于python面向对象编程中下列说法错误,关于python面向对象编程中下列说法错误,关于python面向对象说法错误,关于python面向对象编程中,下列说法中,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python的面向对象编程。

接下来我们就来了解关于Python面向对象编程的知识点吧。

类与实例

类是对象的定义,而实例是"真正的实物",它存放了类中所定义的对象的具体信息。

类、属性和方法命名规范

类名通常由大写字母打头。这是标准惯例,可以帮助你识别类,特别是在实例化过程中(有时看起来像函数调用)。还有,数据属性(变量或常量)听起来应当是数据值的名字,方法名应当指出对应对象或值的行为。

另一种表达方式是:数据值应该使用名词作为名字,方法使用谓词(动词加对象)。数据项是操作的对象、方法应当表明程序员想要在对象进行什么操作。

在定义的类中,大致遵循这样的方针,数据值像 “name”, “phone” 和 “email”,行为如 “updatePhone”,“updateEmail”。这就是常说的 “混合记法(mixedCase)” 或 “骆驼记法(camelCase)”。Python 规范推荐使用骆驼记法的下划线方式,比如, “update_phone”,“update_email”。类也要细致命名,像 “AddrBookEntry”, “RepairShop” 等等就是很好的名字。

新式类与旧式类

新式类和经典类声明的最大不同在于,所有新式类必须继承至少一个父类。如果没有可继承的类,则可继承 object 类。object 是“所有类之母” ,它位于所有类继承结构的最上层。如果没有直接或间接的子类化一个对象,那么就定义了一个经典类。即如果没有指定一个父类,或者如果所子类化的基本类没有父类,这样就是创建了一个经典类。

在 Python3 中定义的类,默认就是新式类,而在 Python2 中要定义一个新式类则必须继承 object 或者继承一个新式类。

self 变量

类的方法与普通的函数只有一个特别的区别,即它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不必为这个参数赋值,Python 会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是 self。虽然可以给这个参数任何名称,但是强烈建议使用 self 这个名称,其他名称都是不赞成使用的。

__init__() 方法

__init__() 类似于类构造器,但实际上并不是一个构造器。Python 创建实例后,在实例化过程中,调用 __init__() 方法,当一个类被实例化时,就可以定义额外的行为,比如,设定初始值或者运行一些初步诊断代码,这主要是在实例被创建后,实例化调用返回这个实例之前,去执行某些特定的任务或设置。

绑定及非绑定方法

在 Python 中,访问类的方法可以通过实例也可以通过类来直接访问。但是 Python 严格要求,没有实例,方法是不能被调用的。这种限制即 Python 所描述的绑定概念(binding),在此,方法必须绑定(到一个实例)才能直接被调用。非绑定的方法可能可以被调用,但实例对象一定要明确给出,才能确保调用成功。然而,不管是否绑定,方法都是它所在的类的固有属性,即使它们几乎总是通过实例来调用的。在 Python 中的类方法也是一种对象。可以简单的理解就是,通过类直接访问的方法称为“未绑定的方法”,而通过实例访问的方法称为“绑定的方法”:

关于Python面向对象编程的知识点总结(python中面向对象的概念)

1. 未绑定的类方法:没有 self

通过类来引用方法返回一个未绑定方法对象。要调用它,你必须显示地提供一个实例作为第一个参数。

2. 绑定的实例方法:有 self

通过实例访问方法返回一个绑定的方法对象。Python 自动地给方法绑定一个实例,所以我们调用它时不用再传一个实例参数。

示例:

类属性与实例属性

类属性仅是与类相关的数据值,和实例属性不同,类属性和实例无关。这些值像静态成员那样被引用,即使在多次实例化中调用类,它们的值都保持不变。不管如何,静态成员不会因为实例而改变它们的值,除非实例中显式改变它们的值。 实例属性与类属性的比较,类似于自动变量和静态变量,但这只是笼统的类推。在你对自动变量和静态变量还不是很熟的情况下,不要深究这些。

类和实例都是名字空间。类是类属性的名字空间,实例则是实例属性的。

可采用类来访问类属性,如果实例没有同名的属性的话,也可以用实例来访问。

私有化

Python并不直接支持私有方式,而要靠程序员自己把握在外部进行特性修改的时机。

为了让方法或者特性变为私有(从外部无法访问),只要在它的名字前面加上双下划线即可。由双下划线 __ 开始的属性在运行时被“混淆”,所以直接访问是不允许的。

实际上,在 Python 带有双下划线的属性或方法并非正真意义上的私有,它们仍然可以被访问。在类的内部定义中,所有以双下划线开始的名字都被“翻译”成前面加上单下划线和类名的形式:

__slots__ 类属性

正常情况下,当我们定义了一个 class,创建了一个 class 的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。在 Python 中默认用字典来存储实例的属性。

示例:

字典位于实例的“心脏” 。 __dict__属性跟踪所有实例属性。举例来说,你有一个实例 inst,它有一个属性 foo,那使用 inst.foo 来访问它与使用 inst.__dict__['foo'] 来访问是一致的。

字典会占据大量内存,如果你有一个属性数量很少的类,但有很多实例,那么正好是这种情况。为内存上的考虑,可以使用 __slots__ 属性来替代 __dict__ 。

, __slots__ 是新式类的特性。基本上, __slots__ 是一个类变量,由一序列对象组成,由所有合法标识构成的实例属性的集合来表示。它可以是一个列表,元组或可迭代对象。也可以是标识实例能拥有的唯一的属性的简单字符串。任何试图创建一个其名不在 __slots__ 中的名字的实例属性都将导致 AttributeError 异常:

这种特性的主要目的是节约内存。其副作用是某种类型的"安全",它能防止用户随心所欲的动态增加实例属性。带 __slots__ 属性的类定义不会存在 __dict__ 了(除非你在 __slots__ 中增加 __dict__ 元素)。

总结

标签: python中面向对象的概念

本文链接地址:https://www.jiuchutong.com/biancheng/380082.html 转载请保留说明!

上一篇:Django日志模块logging的配置详解(django实时刷新日志前端)

下一篇:Django学习笔记之Class-Based-View(django documentation)

  • 可供出售金融资产包括哪些内容
  • 应交税费应交增值税转出未交增值税是什么意思
  • 工厂外包加工项目
  • 股东股权转让印花税公司可以报销吗
  • 资产负债表月报期末余额怎么填
  • 负数发票要给购票人吗
  • 已报关的货物可以改单价价吗
  • 进项票错了但是销项票开出去了怎么办
  • 个人独资企业处罚听证的标准
  • 公司代收代付会被监控吗
  • 未进行账务处理违反什么
  • 银行取现怎么取
  • 印花税已经缴纳了但是还未申报
  • 公司收到股东的投资款以后怎么处理
  • 开具房屋租赁发票税率
  • 公司股权转让应纳税额怎么算
  • 土地增值税计算题及答案解析
  • 出口佣金会计分录
  • 企业代收代支的非税收入需要缴税吗?
  • 商业汇票的目的
  • 拆迁安置房如何写两人名字
  • 内帐应收应付款坏账年末怎么处理?
  • u盘装系统系统放哪里
  • 原始凭证和记账凭证各应具备哪些内容
  • 鸿蒙系统公测版和beta版有什么区别
  • php curl post请求
  • 补缴社保费可以投诉,也可以申请仲裁吗
  • PHP:ftp_get_option()的用法_FTP函数
  • 未分配利润进行利润分配分录
  • vscode配置javafx
  • 如何认定为软件企业
  • 离职补偿金的会计实务处理
  • 潘塔纳尔湿地的主要成因
  • 企业所得税核定征收方法
  • apache修改默认路径
  • PHP面向对象程序设计
  • ChatGPT中国电话不能注册
  • 自产赠送视同销售的成本怎么确定
  • C语言中如何计算除法
  • 计提税费可以记入成本吗
  • MySQL数据库存储引擎
  • 增值税品种
  • 销货方怎么开红字发票
  • 申报企业所得税会计分录怎么写
  • 检查记账凭证的内容包括
  • 工业企业外购存货的入账价值一般包括()
  • 跨年租赁费会计分录
  • 事业单位的财政拨款怎么做账
  • 股东以无形资产入股是否需要缴纳个税
  • 制造费用包括哪些内容科目
  • 研发和技术服务属于什么大类
  • 投资有哪些方面
  • 暂扣员工工资应怎么处理
  • 长期股权投资的成本法和权益法区别
  • 如何提取工会经费的钱
  • 年度汇算清缴交税怎么做账
  • 如何把凭证装订机弄坏
  • sql server 2005如何使用
  • mysql5717安装详细过程
  • winxp 移动硬盘
  • 如何关闭windows防火墙
  • xp系统电脑开机密码忘记了
  • Win10 TH2首个重要更新后应用商店依然存在问题
  • powerdvd remote下载
  • 台式装win7
  • windowsserver2008修改远程端口
  • linux xfs 扩容
  • dos强制删除文件命令
  • css布局的经典网站
  • cocos2dx 3.3 tilemap 缩放滑动并且准确点击对象
  • python爬虫框架 path
  • Android studio 无法勾选sdk
  • bash fi
  • jquery字体设置
  • 原生javascript
  • 房产税可以抵扣增值税吗
  • 四川税务法人实名采集
  • 法治税务演讲稿结尾
  • 财务审计报告哪个位置可以看出是否亏损
  • 襄阳市疫情防控中心电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设