Python基础之day06-面向对象基础1
Python基础之day06-面向对象基础1
文章目录
- Python基础之day06-面向对象基础1
- 一、面向对象介绍
- 二、定义类及创建类对象
- 三、在类中通过self获取对象属性
- 四、__init__方法
- 五、私有属性和私有方法
代码仓库地址: https://gitee.com/andox_yj/python
一、面向对象介绍
- 面向对象介绍:面向对象是一种软件开发的方法,使用类和对象来描述事物。
- 面向过程:根据业务逻辑从上到下写代码
- 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程
- 面向对象编程:是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。
- 面向对象三大特性:
- 封装:把数据和行为(或功能)相结合,形成一个整体,隐藏实现细节,对外提供使用。
- 继承:一个类可以继承另外一个类的属性和方法,有单继承和多继承单继承指一个类只能有一个父类,多继承指一个类可以有多个父类
- 多态:多态依赖于继承,一个类的对象的引用,可以指向这个类的对象,也可以指向它的子类对象,在运行后才能确定具体是哪个对象,通过这种形式让程序有多种形态,称为多态
- 类介绍:
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 方法:类中定义的函数。
- 类属性:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 对象属性:仅属于当前对象的变量
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
- 局部变量:定义在方法中的变量,只作用于当前实例的类。
- 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
- 实例化:创建一个类的实例,类的具体对象。
- 对象(实例、成员):通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
- 类与对象
- 类:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 对象:对象向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类
二、定义类及创建类对象
- 代码示例
""" 语法结构:# 定义一个类class 类名:类属性名=属性值def 方法名(self):代码...# 创建一个类对象object = 类名() """# 创建一个猫对象 class Cat:# 类属性colour = 'black'# 方法def eat(self):print('吃鱼')def drink(self):print('喝酸奶')# 创建猫类的对象 tom1 = Cat() # 创建第一只猫 # 获取类属性 print(tom1.colour) # black # 设置对象属性,并输出 tom1.age = 18 print(tom1.age) # 18 # 执对象方法 tom1.eat() # 第一只猫执行吃鱼的方法 tom1.drink() # 第一只猫执喝酸奶的方法# 创建第二只猫 tom2 = Cat() # 获取类属性 print(tom2.colour) # black # 设置对象属性,并输出 tom2.age = 20 print(tom2.age) # 18 # 执对象方法 tom2.eat() # 第二只猫执行吃鱼的方法 tom2.drink() # 第二只猫执喝酸奶的方法
三、在类中通过self获取对象属性
- self 介绍:类中定义的所有方法,第一个参数都必须是 self,self表示当前类对象本身,既哪个对象调用的该方法,self就代表哪个对象。
- 代码示例
# 创建一个类 class Person:def study(self):print("我在学习{}".format(self.course))# 创建第一个类对象 p1 = Person() p1.course = "编程" p1.study() # 我在学习编程# 创建第二个类对象 p2 = Person() p2.course = "Python" p2.study() # 我在学习Python
四、__init__方法
- __init__方法介绍:
- __init__方法,在创建一个对象时默认被调用,不需要手动调用
- 在__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。
- 在__init__(self)方法里设置的对象属性,与 对象.属性名 = 属性值 的效果是一样的。
- 代码示例
# ################# 1、无参数的__init__方法,给对象绑定默认属性 #################### class Cat1:# 属性def __init__(self):self.name = 'tom'self.age = 18# 方法def introduce(self):print('大家好,我是%s,我今年%s岁' % (self.name, self.age))# 创建类对象时,不需要传递参数 cat1 = Cat1() # 输出对象属性 print(cat1.name) # tom print(cat1.age) # 18 # 使用对象方法 cat1.introduce() # 大家好,我是tom,我今年18岁# ################# 2、有参数的__init__方法 #################### class Cat2:# 属性def __init__(self, name, age):self.name = nameself.age = age# 方法def introduce(self):print('大家好,我是%s,我今年%s岁' % (self.name, self.age))# 创建类对象时,需要传递参数 cat2 = Cat2('黑猫警长', 22) # 输出对象属性 print(cat2.name) # 黑猫警长 print(cat2.age) # 22 # 使用对象方法 cat2.introduce() # 大家好,我是黑猫警长,我今年22岁# ################# 3、有参数的__init__方法,给参数设置默认值 #################### class Cat3:# 属性def __init__(self, name="蓝猫", age=16, gender="男"):self.name = nameself.age = ageself.gender = gender# 方法def introduce(self):print('大家好,我是%s,我今年%s岁,我是%s生' % (self.name, self.age, self.gender))# 创建类对象,传递参数就用传递的,不传递就用默认的 cat3 = Cat3("灰猫", age=30) # 输出对象属性 print(cat3.name) # 灰猫 print(cat3.age) # 30 # 使用对象方法 cat3.introduce() # 大家好,我是灰猫,我今年30岁,我是男生
五、私有属性和私有方法
- 私有权限介绍:
- 在属性名或方法名 前面 加上两个下划线 __,就是私有属性或私有方法了,私有属性。
- 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问;
- 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。
- 注意:私有化既在创建属性或者方法的时候,将名字修改为:
_类名 + __属性名/方法名
,如需访问,使用:对象._类名 + __属性名/__方法名
- 代码示例
""" 用法:私有属性:私有类属性:__变量名 = 值私有对象属性:self.__变量名 = 值私有方法:def __方法名(self): """ class Person:__name = "Andy_class"def __init__(self):# 私有属性self.__name = 'Andy'# 私有方法def __study(self):print("%s学习编程" % self.__name)# 对外访问私有属性的方法 加验证def verify_get_name(self, password):if password == 123:# 私有属性,可以在类的内部使用print(self.__name)else:print('密码验证失败')# 对外访问私有属性的方法def get_name(self):print(self.__name)# 对外修改私有属性的方法def set_name(self, new_name):self.__name = new_name# 对外调用私有方法的方法 加验证def verify_get_study(self, password):if password == 123:# 私有方法,可以在类的内部使用self.__study()else:print('密码验证失败')# 对外调用私有方法的方法def get_study(self):# 私有方法,可以在类的内部使用self.__study()person = Person()# 1.调用私有属性报错 # print(person.__name) # AttributeError: 'Person' object has no attribute '__name' # 2.调用私有方法报错 # person.__study() # AttributeError: 'Person' object has no attribute '__study'# 3.通过调用方法验证密码后查看私有属性,安全验证 person.verify_get_name(123) # Andy # 4.使用对外接口方法来查看私有属性 person.get_name() # Andy # 5.使用对外接口来设置私有属性 person.set_name("Andy_Change") person.get_name() # Andy_Change# 6.通过调用方法验证密码后调用私有方法,安全验证 person.verify_get_study(123) # Andy_Change学习编程 # 7.使用对外接口方法来查看私有属性 person.get_study() # Andy_Change学习编程# 8.强制访问私有属性与私有方法:对象._类名 + __属性名/__方法名 print(person._Person__name) # Andy_Change person._Person__study() # Andy_Change学习编程# 9.当对象属性与类属性重名时,会优先调用对象属性,如果想使用类属性,可以类名.类属性名 print(person._Person__name) # Andy_Change print(Person._Person__name) # Andy_class
Python基础之day06-面向对象基础1相关推荐
- Python第十七课(面向对象基础)
Python第17课(面向对象基础) >>>思维导图>>>中二青年 面向对象编程思想OOP 什么是面向对象 面向对象是一种编程思想,是前辈们总结出的经验,指导 ...
- 跟着王进老师学开发Python篇第四季:面向对象基础篇-王进-专题视频课程
跟着王进老师学开发Python篇第四季:面向对象基础篇-772人已学习 课程介绍 本季课程为Python面向对象基础篇,内容包含:面向对象的介绍.创建类和实例化.实例变量和实例方法.类 ...
- Python基础入门_5面向对象基础
Python 基础入门前四篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 第五篇主要 ...
- 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)
目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...
- 01 PHP面向对象基础
转载于:黑马程序员武汉中心 面向对象基础 文章目录 面向对象基础 一.面向对象编程思想 **二.面向对象基础** **1.面向对象关键字说明** **2.面向对象简单技术实现** **3.类成员** ...
- 【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~
Java练习题 · 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一.填空题 面向对象的三大特征:_______ ._______ ._______. 类由_______和_____ ...
- Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】
视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...
- Python面向对象基础示例_创建对象
Python面向对象基础示例_创建对象 python是面向对象的语言,你可以很轻松的创建一个类和对象.本书代码源自<<Python 3 Object-Oriented Programmin ...
- python和对象复习_python 面向对象基础和高级复习
面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...
- 从0基础学习Python(13)[面向对象思想]
从0基础学习Python (Day13) 面向对象思想 1.面向对象编程介绍 面向对象 概述 目前软件开发技术中两种主流思想:面向过程.面向对象 面向过程思想出现较早,C语言 面向对象思想 ...
最新文章
- 关于Xbox live及其在中国的使用
- ASP.net core 使用UEditor.Core 实现 ueditor 上传功能
- Docker删除某个容器时失败解决方案
- C++ vector使用示例
- 火币生态链项目SuperNova与Poly Network达成战略合作
- 软件企业通常会犯近视和远视两个错误
- 2017-07-12(数据库)
- 李华《灵武二孝赞并序》中之“灵武”系指何地?
- 工商银行发消息说5星级服务器,工商银行5星级客户多吗?会刷星你也可以..
- 用R包TCGA-Assembler下载TCGA数据
- 我是不是该安静的走开
- (翻译)优秀价格表的7种设计策略
- The service cannot be activated because it does not support ASP.NET compatibility
- 【RPC】分布式一致性与一致性协议
- ‘∞‘ is not a valid numeric or approximate numeric value
- UOS20 终端误删除之后的处理
- vbs做一个会动的进度条_重装系统前后都需要做哪些工作?这几点需注意!
- 在计算机内部 磁盘0说明什么,磁盘0和磁盘分区1是什么意思
- Java多线程写文件
- Android 和 iOS 孰优孰劣:真实应用开发过程告诉你答案
热门文章
- IterNet——迭代式U-Net变形
- EXE文件加密器(最新版V5.3)
- 在C#中实现将PPT 转换为 PPTX,开发小白的Aspose操作指南
- java获取请求者真实的公网ip地址
- 华为首款鸿蒙平板发布,华为发布首款鸿蒙平板,全面提升平板行业创新能力
- Aspose.Slides For .Net v19.6有哪些功能亮点?我们用示例说话!
- C语言实现老鼠走迷宫(附源码)
- 一行命令搞定mac安装git(mac 12.2.1版本 )
- 2008服务器系统如何设置桌面,Windows server 2008系统基础优化技巧
- 升压芯片MAX1771学习(1) ----2020.2.20