首页 > 编程语言 >Python 高阶语法

Python 高阶语法

时间:2024-07-25 19:54:56浏览次数:11  
标签:__ Python 方法 成员 语法 私有 继承 父类 高阶

前言:

我们通过上篇文章学习了Python的基础语法,接下来我们来学习Python的高阶语法

1.初识对象

在Python中我们可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的

面向对象包含 3 大主要特性:
 封装
 继承
 多态

(内容靠后)

1.1使用对象组织数据

在程序中设计表格,我们称之为:设计类(class)

在程序中打印生产表格,我们称之为:创建对象

在程序中填写表格,我们称之为:对象属性赋值

2.成员方法

2.1类的定义和使用

的语法:

创建类对象的语法:

2.2成员变量和成员方法

我们可以看出,中:

• 不仅可以定义属性用来记录数据
• 也可以定义函数,用来记录行为

其中:

• 类中定义的属性(变量),我们称之为:成员变量
• 类中定义的行为(函数),我们称之为:成员方法

注意:

定义在类内部的函数,我们称之为方法

2.3成员方法的定义语法

在类中定义成员方法和定义函数基本一致,但仍有细微区别:

我们可以看到,在方法定义的参数列表中,有一个: self 关键字

self 关键字是成员方法定义的时候,必须填写的

• 它用来表示类对象自身的意思
• 当我们使用类对象调用方法的时候, self 会自动被 python 传入

注意:

在方法内部,想要访问类的成员变量,必须使用 self

例如:

不过,self 关键字,尽管在参数列表中,但是传参的时候可以忽略它

可以看到,在传入参数的时候, self 是透明的,可以不用理会它

3.类和对象

3.1面向对象编程

类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作
这种套路,称之为:面向对象编程

3.2语法

基于类创建对象的语法:

3.3在程序中通过类来描述

3.4基于类创建对象

4.构造方法

4.1属性(成员变量)的赋值

这种方法略显繁琐

4.2 __init__()构造方法

• 构建类时传入的参数会自动提供给 __init__ 方法
• 构建类的时候 __init__ 方法会自动执行

注意:

构造方法也是成员方法,不要忘记在参数列表中提供: self

5.魔术方法

5.1 __str__ 字符串方法

当类对象需要被转换为字符串之时,会输出如下结果(内存地址)

我们可以通过 __str__ 方法,控制类转换为字符串的行为

5.2 __lt__ 小于符号比较方法

直接对 2 个对象进行比较是不可以的

但是在类中实现 __lt__ 方法,即可同时完成:小于符号 和 大于符号 2 种比较

比较大于的魔术方法是:__gt__

5.3__le__ 小于等于比较符号方法

用法跟上面一样

5.4  __eq__ 比较运算符实现方法

注意:

不实现 __eq__ 方法,对象之间可以比较,但是是比较内存地址,也即是:不同对象 == 比较一定是 False 结果

6. 封装

6.1对用户隐藏的属性和行为

现实世界中的事物,有属性和行为
但是不代表这些属性和行为都是开放给用户使用的

苹果越狱、安卓 root ,也是为了突破权限使用这些对用户隐藏的属性和行为

6.2私有成员

类中提供了私有成员的形式来支持。
• 私有成员变量
• 私有成员方法

定义私有成员的方式非常简单,只需要:
• 私有成员变量:变量名以 __ 开头( 2 个下划线)
• 私有成员方法:方法名以 __ 开头( 2 个下划线)

6.3使用私有成员

私有方法无法直接被类对象使用

私有变量无法赋值,也无法获取值

私有成员无法被类对象使用,但是可以被其它的成员使用

7.继承

7.1什么是继承?

继承表示:将从父类那里继承(复制)来成员变量和成员方法(不含私有)

代码的实现

并且,继承分为:单继承和多继承

7.2单继承

语法:

操作:

7.3多继承

Python 的类之间也支持多继承,即一个类,可以继承多个父类

如下:

语法:

操作:

注意:

多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级

即:先继承的保留,后继承的被覆盖

7.4复写

子类继承父类的成员属性和成员方法后,如果对其“不满意”,那么可以进行复写

即:在子类中重新定义同名的属性或方法即可

7.5调用父类同名成员

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员

如果需要使用被复写的父类的成员,需要特殊的调用方式

方式1:

• 调用父类成员
使用成员变量:父类名 . 成员变量
使用成员方法:父类名 . 成员方法 (self)

方式 2 :
• 使用 super() 调用父类成员
使用成员变量: super(). 成员变量
使用成员方法: super(). 成员方法 ()

注意:

只能在子类内调用父类的同名成员
子类的类对象直接调用会调用子类复写的成员

标签:__,Python,方法,成员,语法,私有,继承,父类,高阶
From: https://blog.csdn.net/boldht/article/details/139295336

相关文章

  • switch分支结构(基础语法)
    语法:switch(表达式){case常量1:语句块1;break;case常量2;语句块2;break;.......//可重复多个default:default语句块;break;}注:switch的case中一个判断正确则跳过后面的case(没有缺少break),以运行switch以后的代码。case全部不对应则执行default语句。案例练习要求:用......
  • python实现ftpServer
    使用python模拟一个fetServer importosimportsocketimportthreadingfrompyftpdlib.authorizersimportDummyAuthorizerfrompyftpdlib.handlersimportFTPHandlerfrompyftpdlib.serversimportFTPServer_source_root=os.path.dirname(os.path.dirname(os.path......
  • python处理process(windows)
    python根据进程名称获取进程id、taskkill进程 importosimportpsutilfrompsutilimportNoSuchProcessclassProcessUtilCls:#停止进程(windows)。#参数:tag=1时按照process_name停止进程,否则按照pids[pid1,pid2...]停止进程@staticmethoddefpr......
  • 《Python 基础方法的奇妙回顾之旅》
    1.学习内容1.1本篇博客主要是学过的方法进行总结:1.1.1 print()方法print方法是Python中最常用到的方法,print() 方法用于将指定的对象输出到控制台。语法:print(*objects,sep='',end='\n',file=sys.stdout,flush=False)objects:要输出的一个或多个对象,可以是字符串、......
  • python之七彩进度条rich.progress
    Spinner中国有七彩云南,Python有七彩进度条rich.progress.Progress#!/usr/bin/envpythonfromcontextlibimportcontextmanagerfromtypingimportGenerator#pipinstallasynctorhttpxrichimportasynctorimporthttpxfromrich.progressimportProgress,Spinner......
  • python运行报警告:Cython directive 'language_level' not set, using '3str' for now
    相关:https://stackoverflow.com/questions/34603628/how-to-specify-python-3-source-in-cythons-setup-pycython的setup.py文件内容:fromdistutils.coreimportsetupfromCython.Buildimportcythonizesetup(name='GreatCirclemodulev1',ext_modu......
  • Java基础语法
    Java基础语法关键字与保留字关键字:Java中的关键字是被赋予特殊含义的字符串(单词),用于特定的语法结构。Java中常用的关键字包括但不限于:public、static、void、mainabstract:用于声明抽象类或抽象方法boolean:用于声明布尔类型的变量break、continue:用于控制循环byte、short、......
  • SSM-网络课程系统-29230(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、APP
    SSM网络课程系统摘 要本论文主要论述了如何使用SSM框架开发一个网络课程系统,将严格按照软件开发流程进行各个阶段的工作,采用B/S架构Java技术,面向对象编程思想进行项目开发。在引言中,将论述网络课程系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统......
  • 如何在 python 日志记录中插入换行符?
    importlogginglogging.basicConfig(level=logging.DEBUG,format='%(asctime)s%(levelname)s%(message)s',datefmt='%H:%M:%S')logging.info('hello')logging.warning('\nnewhello')11:15:01INFOhello11:16......
  • 7:Python 变量类型
    Python 变量类型变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。变量赋值Python中的变量赋值不需要......