python面向对象编程

python面向对象编程(基础篇) 当然不是,在son的构造方法中,我首先调用的是父亲的构造方法这时候son有了父亲的两个属性,之后又调用了母亲的构造方法,这时候由于母亲的eye属性和父亲的重复了,就像我们首先定义a=1之后我们又定义了a=2那么最终a的值一定是2。char a[]来定义单个字符的数组(字符串),a[][]来定义字符串的集合,但是在定义某些数据类型时,我们发现例如学生,他不止有字符串类型的姓名、性别,更有整数类型的学号、年龄等,甚至还有data类型的出生日期,离返校时间。注意在方法中我们要固定的传入一个self,这是规则。 阅读详情

python面向对象编程

python支持函数式编程和面向对象式编程
需要实现以下

小明,12岁,男,喜欢打篮球
小明,12岁,男,喜欢踢足球
小明,12岁,男,喜欢打羽毛球

老王,32岁,男,喜欢抽烟
老王,32岁,男,喜欢喝酒
老王,32岁,男,喜欢大保健
  1. 定义
    1、函数:
    def + 函数名(参数)

    def foo(name,age,sex,hobby):
    	print('%s,%s,%s,%s'%(name,age,sex,hobby))
    	
    foo('小明','12岁','男','喜欢打篮球') # 小明,12岁,男,喜欢打篮球
    foo('小明','12岁','男','喜欢踢足球') # 小明,12岁,男,喜欢踢足球
    foo('小明','12岁','男','喜欢打羽毛球') # 小明,12岁,男,喜欢打羽毛球
    
    foo('老王','32岁','男','喜欢抽烟') # 老王,32岁,男,喜欢抽烟
    foo('老王','32岁','男','喜欢喝酒') # 老王,32岁,男,喜欢喝酒
    foo('老王','32岁','男','喜欢大保健') # 老王,32岁,男,喜欢大保健
    	
    

    2、面向对象:
    class => 类
    def => 类的方法
    self

    class bar:
    	def foo(self,name,age,sex,hobby):
    		print('%s,%s,%s,%s'%(name,age,sex,hobby))
    
    a = bar() # 类的实列化,建立类对象
    a.foo('小明','12岁','男','喜欢打篮球') # 小明,12岁,男,喜欢打篮球
    a.foo('小明','12岁','男','喜欢踢足球') # 小明,12岁,男,喜欢踢足球
    a.foo('小明','12岁','男','喜欢打羽毛球') # 小明,12岁,男,喜欢打羽毛球
    
    a.foo('老王','32岁','男','喜欢抽烟') # 老王,32岁,男,喜欢抽烟
    a.foo('老王','32岁','男','喜欢喝酒') # 老王,32岁,男,喜欢喝酒
    a.foo('老王','32岁','男','喜欢大保健') # 老王,32岁,男,喜欢大保健
    	
    

现在看,面向对象的编程方式,并没有比函数式编程简洁,继续向下看;
2. 执行
1、函数 :
函数名(参数)
2、面向对象:
创建一个中间对象,将中间对象赋值给一个变量(即:类的实例化,中间对象即为self)
利用中间对象调用类下面的各种方法

	class bar:
		def foo(self,hobby):
			print('%s,%s,%s,%s'%(self.name,self.age,self.sex,hobby))
	
	a = bar() # 类的实列化,建立类对象
	a.name = '小明'
	a.age = '12岁'
	a.sex = '男'
	a.foo('喜欢打篮球') # 小明,12岁,男,喜欢打篮球
	a.foo('喜欢踢足球') # 小明,12岁,男,喜欢踢足球
	a.foo('喜欢打羽毛球') # 小明,12岁,男,喜欢打羽毛球
	
	b = bar()
	b.name = '老王'
	b.age = '32岁'
	b.sex = '男'
	b.foo('喜欢抽烟') # 老王,32岁,男,喜欢抽烟
	b.foo('喜欢喝酒') # 老王,32岁,男,喜欢喝酒
	b.foo('喜欢大保健') # 老王,32岁,男,喜欢大保健
		

这样对比之前函数式编程是不是好多了;
此处可以看出来了把,何时使用函数式编程,何时使用面向对象式编程,故面向对象编程的使用场景是:如果多个函数中均使用相同的参数成员时,使用面向对象式编程
继续学习面向对象式编程:
面向对象编程:构造方法 __init__
作用:开始将类实列化时,同时取读取引入的参数,将其放到实列化的对象中,供随时调用:

	class bar:
		def __init__(self,name,age,sex)
			self.name = name
			self.age = age
			self.sex = sex
		def foo(self,hobby):
			print('%s,%s,%s,%s'%(self.name,self.age,self.sex,hobby))
	
	a = bar('小明','12岁','男') # 类的实列化,建立类对象
	a.foo('喜欢打篮球') # 小明,12岁,男,喜欢打篮球
	a.foo('喜欢踢足球') # 小明,12岁,男,喜欢踢足球
	a.foo('喜欢打羽毛球') # 小明,12岁,男,喜欢打羽毛球

	b = bar('老王','32岁','男')
	b.foo('喜欢抽烟') # 老王,32岁,男,喜欢抽烟
	b.foo('喜欢喝酒') # 老王,32岁,男,喜欢喝酒
	b.foo('喜欢大保健') # 老王,32岁,男,喜欢大保健

		

此时面向对象编程是不是调用方式更加简便了呢?
这就是面向对象编程的三大特性之一:封装
继续往下看:
如果我对于此打印内容需要变更时,我会怎么做?

	class bar:
		def __init__(self,name,age,sex)
			self.name = name
			self.age = age
			self.sex = sex
		def foo(self,hobby):
			print('%s,%s,%s,%s'%(self.name,self.age,self.sex,hobby))
	class child(bar):
		def foo1(self,where,hobby)
			print('%s,%s,%s,%s%s'%(self.name,self.age,self.sex,where,hobby))
	
	a = child('小明','12岁','男') # 类的实列化,建立类对象
	a.foo1('在公园','喜欢打篮球') # 小明,12岁,男,在公园喜欢打篮球
	a.foo1('在球场','喜欢踢足球') # 小明,12岁,男,在球场喜欢踢足球
	a.foo1('在学校','喜欢打羽毛球') # 小明,12岁,男,在学校喜欢打羽毛球

	b = child('老王','32岁','男')
	b.foo1('在阳台','喜欢抽烟') # 老王,32岁,男,在阳台喜欢抽烟
	b.foo1('在酒吧','喜欢喝酒') # 老王,32岁,男,在酒吧喜欢喝酒
	b.foo1('在按摩店','喜欢大保健') # 老王,32岁,男,在按摩店喜欢大保健

		

在第二个类中,并没有引入name、age、sex等,为什么任可以继续调用呢,细心的人观察到我在建立第二个类时,加了一个括号,括号中加了一个ber:class chiind(bar):,这就是面向对象的第二个特性:继承;
在面向对象编程时,定义的类对象可以引用其他类的内容:只需将父类(基类)以变量的形式传入子类(派生类)中,即可在子类中继承父类,调用父类。
当不想要继承父类的某一函数时,只需在子类函数中定义一个相同命名的函数即可(此举默认为放弃继承父类指定函数,因为默认当一个类实例化后,类中的self就代值实例化的对象),当执行一个类方法时,实例对象会先在当前类中找对应类方法,当当前类找不到时,才会到父类中寻找);
当然,也可以取消默认,取消方法如下:

class father:
    def f1(self):
        print('father:f1')

    def f2(self):
        print('father:f2')


class child(father):
    def f1(self): # 直接引入一个与父类相同的方式,默认不在继承父类方法
        print('child:c1') # child:c1   

    def f2(self): # 引入一个与父类名称一致的方法后,任想要继续调用父类的方式,只需在方法中添加super(子类名,实列化对象).父类函数即可
        super(child,self).f2() # father:f2    #执行父类(基类)的方法 如果此方法还需要引入参数,不用加self,self在前面已经引入了
        # 或者使用 father.f2(self) 也可执行父类方法 有参数,在self后继续添加即可 与super效果一致 推荐使用super 
        print('chind:c2') # chind:c2
    

a = child()
a.f1() # child:c1 
a.f2() # father:f2 chind:c2

继承方式,除上述继承外,还有一个与c++相同的,其他语言都没有的功能:多继承;

class father:
    def f1(self):
        print('father:f1')
class father2:
    def f1(self):
        print('father:f2')

class child(father,father2):
    pass

a = child()
a.f1()  # father:f1

同时继承多个父类,从上代码中,可以猜想出,当多继承父类们有相同方法时,默认按子类继承引入顺序调用,即从左往右继承。
那么,当多继承遇到父类上还有父类时,继承优先级又如何处理呢?

class grandfather:
    def f1(self):
        print('grandfather:f1')
class father(grandfather):
    def f0(self):
        print('father:f1')
class father2:
    def f1(self):
        print('father:f2')

class child(father,father2):
    pass

a = child()
a.f1() #grandfather:f1

结论:
调用方法时,继承的优先级默认顺序总是为在子类的基础上找父类,在找父类的父类,直到不存在父类,再找第二个父类,以此类推,注意:此处注明了一个特殊关系,当其中一个顶父类与其他关系存在交集时,优先级降低,不再走到黑!
总结:1、左侧优先、2、一条道走到黑、3、存在统一根时,根最后执行
多继承的优先级关系注意避坑:

class grandfather:
    def f1(self):
        print('grandfather:f1')

class father(grandfather):
    def f0(self):
        print('father:f1')
        self.f1() 
    def f1(self):
        print('father:f2')

class father2:
    def f1(self):
        print('father2:f2')

class child(father2,father):
    pass


a = child()
a.f0() # father:f1 father2:f2
# 按以上规则,执行f0 找到的时father.f0()毋庸置疑,但是在,f0下调用self.f1时,会执行啥?注意,self永远指代实列化的对象,即child(),故此处self.f1(),与a.f1()没有任何区别,当然优先级也没有区别!!!

面向对象编程的三大特性最后一个特性为:多态
何为多态:引入参数多形态:string、int、list等等。。。。

面向对象编程三大特性总结:

封装:把类的属性赋予给对象 作用:方便调用

继承:子类继承父类的属性和方法 作用:减少代码量

多态:一类事物的多种表现形式,父类的实现指向子类的引用,需要利用继承,方法重写,重载等方法 作用:减少代码量

Python14 面向对象编程 Python的面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计应用程序和计算机程序。这些对象由数据和能够操作这些数据的方法组成。面向对象编程的主要目标是提高软件的可重用性、可维护性和灵活性。类(Class)类是创建对象的模板或蓝图。它定义了一组属性(称为字段或变量),以及操作这些数据的方法。一个类可以包括基本的数据属性(静态的信息片段),以及能够对数据执行特定功能的方法。对象(Object)对象是类的实例。 阅读详情

相关推荐

让AI稳定生成流程图:基于Skill与Mermaid的工程化实践

流程图是软件工程中沟通业务逻辑的通用语言,但其绘制与维护却长期依赖手工工具,导致文档更新滞后、协作成本高。随着大语言模型技术的成熟,自然语言生成代码已成为可落地的技术路径,而Mermaid作为一款文本化图表语法,凭借其可版本管理、可自动渲染和可嵌入文档的优势,正逐步取代传统绘图工具。要让AI稳定输出合格的流程图,关键在于为模型定义一套清晰的Skill规则,约束输入结构、处理逻辑和输出格式。本文从流程图的工程痛点出发,介绍如何利用大模型将自然语言描述转化为结构化文本,再通过Mermaid CLI渲染成可视化图

weixin_42548782的博客 311

何时使用面向对象编程

确定对象是面向对象分析和编程中最为重要的任务。 对象同时包含“数据”和“行为”。如果只对数据操作,使用列表、集合、字典或者python中的其他数据结构通常是更好的选择;如果只关注行为而不存储任何数据,那一个简单的函数则会更为合适。 把对象当做“对象”来对待,不能因为能够使用一个对象就急于使用这个对象,也绝不要在当你需要使用一个类的时候,疏于创建一个类。 下面列举了一个计算多边形周长的例子来...

weixin_33779515的博客 189

Cadence AMS数模混合仿真:从零搭建高效验证环境的实战指南

本文是Cadence AMS数模混合仿真的实战指南,详细介绍了如何从零搭建高效的芯片验证环境。内容涵盖环境准备、Testbench创建、核心Config视图与ADE设置、仿真运行调试及性能加速技巧,旨在帮助工程师解决SoC设计中数字与模拟模块的集成验证难题,确保芯片设计一次成功。

weixin_29164091的博客 323

【Python基础】Python面向对象编程

​ Python面向对象编程(简称OOP)是Python语言中最重要的特性之一。它是一种通过“对象”来设计软件的方法。它通过将数据和操作数据的方法封装在对象中,使得程序更加模块化、可重用和易于维护。它遵循一切皆对象的理念,可以将现实世界的事物使用类与实例进行模拟。​ 对于初学者来说,理解面向对象编程的基本原理和Python中的实现方式是非常有帮助的。本文旨在为初学者提供一个易于理解的Python面向对象编程介绍,并探讨其在实际编程中的应用和优势。什么是Python?

分享是一种境界,勤于分享,乐于分享! 2120

Win10插网线显示未识别网络的三种解决方法

本文介绍了三种解决Win10插网线显示未识别网络问题的方法:更新或重启网络设备驱动程序、重置Winsock目录、启用Network Setup Service服务。这些方法都是基于常见的网络问题和解决方案而设计的,适用于大多数Win10用户。如果你遇到了这一问题,可以按照上述步骤进行操作,相信一定能够找到解决问题的方法。需要注意的是,在进行任何操作之前,请务必备份重要数据以防万一。此外,如果你对计算机硬件或软件不熟悉,建议寻求专业人士的帮助以避免造成不必要的损失。

nntxthml的博客 6773

eLabRadio软件无线电虚实结合仿真开发平台简介

在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。

weixin_55349105的博客 6319

Python面向对象编程

Python不只是解释性语言,也是一门面向对象的编程语言。本文先介绍面向对象编程,再逐步讲解类和对象的定义、属性及方法。类使得程序设计更加抽象,通过类的继承及其他常用方法,可以让程序语言更接近人类的语言。

Morse_Chen的博客 2072

从0到1,快速理清 | DeepSeek Harness

DeepSeek推出自研Harness开发平台,主打"一切皆插件"理念,将AI执行能力模块化为可自由组合的插件体系。带你从0到1,快速了解开发链路。

IT学习博客 679

Python 面向对象编程

在Python中,类(Class)是面向对象编程(Object-Oriented Programming, OOP)的基础概念。类是创建对象(Object)的蓝图,它定义了对象的属性和方法。每个对象都是类的一个实例,具有类定义的属性和行为。类是一种用户自定义的数据结构,它包含了一组属性(成员变量)和行为(成员方法)。在Python中,可以使用class关键字来定义一个类,并使用def关键字来定义类的成员方法。使用class关键字定义一个类,类名作为该类的标识符。

2201_75479454的博客 2565

『OPEN3D』1.2 mesh处理 python篇

介绍open3d对mesh的基本处理操作

NNNNNathan的博客 4648

从零构建简历智能匹配系统:AI技术助力高效招聘

本文详细介绍了简历智能匹配系统的开发过程,从数据收集、预处理、特征提取到模型匹配和结果展示,每一步都提供了详细的代码实例。通过使用TF-IDF、Word2Vec和BERT等技术,我们能够有效地将求职者的简历与职位描述进行匹配,从而提高招聘效率。未来,随着自然语言处理技术的进一步发展,简历智能匹配系统将变得更加智能和高效,为企业和求职者提供更好的服务。

理论都是虚的,代码才是王道。 309

python 面向对象编程

带你走进 python 面向对象编程的世界

不能再留遗憾了的博客 4612

Node-RED教程(一):Node-RED的介绍与安装

最新最全的Node-RED,node-red教程都在这里。 本篇介绍node-red的安装。使用docker 安装node-red

知无涯 3万+

【Python】系列之面向对象编程

对象(class)是一种抽象的概念,上面定义的对象Person,指的就是学生这个概念,而实例(instance)则指一个个具体的对象,例如上面的张三丰和l张无忌就是两个具体的Person,也就是实例从上面的案例可以看出,面向对象的程序设计思想其实就是抽象出对象(class),然后根据对象创建实例(instance)最后,面向对象的抽象程度比函数高,因为一个对象既包含数据,也包含操作数据的方法,封装、继承、多态是面向对象的三大特点。

康师傅没有眼泪 6511

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python学习-面向对象编程

在 Python 中,可以使用class关键字来定义类。以下是一个简单的类定义示例:​在上面的示例中,我们定义了一个名为Person的类,它有两个属性name和age,以及一个方法say_hello。面向对象编程是一种强大的编程范式,它可以提高代码的可维护性、可扩展性和可复用性。Python 提供了丰富的面向对象编程特性,使得开发者可以更加方便地进行面向对象编程。在实际开发中,可以根据具体需求选择合适的面向对象编程特性,以提高代码的质量和效率。

wu73guang5jian的博客 1634

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Python中面向对象编程思想

本文旨在深入探讨Python中的面向对象编程(OOP)概念,包括其核心思想、实现方式以及最佳实践。我们将从OOP的基础知识入手,逐步深入到更高级的特性,如继承、多态和封装,并探讨如何在实际编程中应用这些概念。面向对象编程(OOP)是一种以对象为核心的编程范式,它通过类和对象的概念来设计软件,提高了代码的可读性和可维护性。OOP的核心在于封装,它将数据和相关操作封装在一起,隐藏内部实现细节,仅对外暴露必要的接口。继承允许新类继承现有类的属性和方法,从而扩展或覆盖原有功能。

Wayne_zzx1112233的博客 910

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【python】python进阶——面向对象编程

Python 从设计之初就是一门面向对象的语言,它的核心机制建立在“一切皆对象”的基础上,但它也优雅地支持函数式、过程式等多种编程范式,是一门真正的多范式语言。

weixin_51924657的博客 1939

Python语言的面向对象编程

在Python中,可以使用class关键字定义一个类。如下所示:```pythonclass Dog:definitself.name = name # 属性self.age = age # 属性def bark(self): # 方法")```pythonprint(my_dog.name) # 输出:Buddymy_dog.bark() # 输出:Buddy says woof!首先,我们定义一个Book类,用于表示书籍的信息。

dasinigeguisun01的博客 1372

Python 面向对象编程指南

面向对象编程(Object-Oriented Programming, OOP)是一种强大的编程范式,其核心思想是将现实世界中的事物抽象为程序中的“对象”(Objects),并将对象的属性(数据)和行为(方法)封装在一起。Python 从诞生之初就支持面向对象编程,并且这种范式贯穿于其语言设计之中。模块化 (Modularity):将代码组织成独立的、可重用的对象单元,降低了系统的复杂性。可维护性 (Maintainability)

weixin_39145568的博客 1359

面向对象编程python

类是一种抽象的数据类型。它具有特定的属性和方法,面向对象编程就是利用类来进行的。# 定义了一个称之为Myclass的类(类的首字母一般大写)# 类的初始化(也是一种方法),将参数传递# 类的方法(该方法为展现输入的值)在这个例子中,MyClass是一个类,它有两个属性:value和display。value是一个实例属性,它被定义在__init__方法中,display是一个实例方法,它被定义在类内部。self是一个参数,表示对象自身【对象的id号】,里面存放着对象自身的地址。

qq_62780060的博客 741
上一篇: python中正则表达式的应用
下一篇: python面向对象编程(三)
gqf960708
博客等级 码龄9年 5粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值