Python基础之day06-面向对象基础1

文章目录

  • Python基础之day06-面向对象基础1
  • 一、面向对象介绍
  • 二、定义类及创建类对象
  • 三、在类中通过self获取对象属性
  • 四、__init__方法
  • 五、私有属性和私有方法

代码仓库地址: https://gitee.com/andox_yj/python

一、面向对象介绍

  1. 面向对象介绍:面向对象是一种软件开发的方法,使用类和对象来描述事物。
  • 面向过程:根据业务逻辑从上到下写代码
  • 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程
  • 面向对象编程:是一种解决软件复用的设计和编程方法。 这种方法把软件系统中相近相似的操作逻辑和操作 应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。
  1. 面向对象三大特性:
  • 封装:把数据和行为(或功能)相结合,形成一个整体,隐藏实现细节,对外提供使用。
  • 继承:一个类可以继承另外一个类的属性和方法,有单继承和多继承单继承指一个类只能有一个父类,多继承指一个类可以有多个父类
  • 多态:多态依赖于继承,一个类的对象的引用,可以指向这个类的对象,也可以指向它的子类对象,在运行后才能确定具体是哪个对象,通过这种形式让程序有多种形态,称为多态
  1. 类介绍:
  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 方法:类中定义的函数。
  • 类属性:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
  • 对象属性:仅属于当前对象的变量
  • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
  • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
  • 局部变量:定义在方法中的变量,只作用于当前实例的类。
  • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
  • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
  • 实例化:创建一个类的实例,类的具体对象。
  • 对象(实例、成员):通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
  1. 类与对象
  • 类:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
  • 对象:对象向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念——类

二、定义类及创建类对象

  1. 代码示例

    """
    语法结构:# 定义一个类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获取对象属性

  1. self 介绍:类中定义的所有方法,第一个参数都必须是 self,self表示当前类对象本身,既哪个对象调用的该方法,self就代表哪个对象。
  2. 代码示例
    # 创建一个类
    class Person:def study(self):print("我在学习{}".format(self.course))# 创建第一个类对象
    p1 = Person()
    p1.course = "编程"
    p1.study()  # 我在学习编程# 创建第二个类对象
    p2 = Person()
    p2.course = "Python"
    p2.study()  # 我在学习Python
    

四、__init__方法

  1. __init__方法介绍:
  • __init__方法,在创建一个对象时默认被调用,不需要手动调用
  • 在__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。
  • 在__init__(self)方法里设置的对象属性,与 对象.属性名 = 属性值 的效果是一样的。
  1. 代码示例

    # ################# 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岁,我是男生
    

五、私有属性和私有方法

  1. 私有权限介绍:
  • 在属性名或方法名 前面 加上两个下划线 __,就是私有属性或私有方法了,私有属性。
  • 类的私有属性 和 私有方法,都不能通过对象直接访问,但是可以在本类内部访问;
  • 私有属性 和 私有方法 往往用来处理类的内部事情,不通过对象处理,起到安全作用。
  1. 注意:私有化既在创建属性或者方法的时候,将名字修改为:_类名 + __属性名/方法名,如需访问,使用:对象._类名 + __属性名/__方法名
  2. 代码示例
    """
    用法:私有属性:私有类属性:__变量名 = 值私有对象属性: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相关推荐

  1. Python第十七课(面向对象基础)

    Python第17课(面向对象基础)    >>>思维导图>>>中二青年 面向对象编程思想OOP 什么是面向对象 面向对象是一种编程思想,是前辈们总结出的经验,指导 ...

  2. 跟着王进老师学开发Python篇第四季:面向对象基础篇-王进-专题视频课程

    跟着王进老师学开发Python篇第四季:面向对象基础篇-772人已学习 课程介绍         本季课程为Python面向对象基础篇,内容包含:面向对象的介绍.创建类和实例化.实例变量和实例方法.类 ...

  3. Python基础入门_5面向对象基础

    Python 基础入门前四篇: Python 基础入门–简介和环境配置 Python基础入门_2基础语法和变量类型 Python基础入门_3条件语句和迭代循环 Python基础入门_4函数 第五篇主要 ...

  4. 2021小白Python学习记录Day7 面向对象基础(上) (定义类和对象、__init__传参、self、魔术方法)

    目录 一.定义类和对象 1.定义类 2.创建一个对象 2.1 创建一个实例对象并调用实例方法 2.2 创建另一个实例对象: 2.3 添加实例属性 二.__init__(self) 1. __init_ ...

  5. 01 PHP面向对象基础

    转载于:黑马程序员武汉中心 面向对象基础 文章目录 面向对象基础 一.面向对象编程思想 **二.面向对象基础** **1.面向对象关键字说明** **2.面向对象简单技术实现** **3.类成员** ...

  6. 【Java练习题汇总】《第一行代码JAVA》面向对象基础篇,汇总Java练习题——面向对象:特性、类与对象、数组、String、内部类... ~

    Java练习题 · 面向对象基础篇 1️⃣ 面向对象基础篇 1️⃣ 面向对象基础篇 一.填空题 面向对象的三大特征:_______ ._______ ._______. 类由_______和_____ ...

  7. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...

  8. Python面向对象基础示例_创建对象

    Python面向对象基础示例_创建对象 python是面向对象的语言,你可以很轻松的创建一个类和对象.本书代码源自<<Python 3 Object-Oriented Programmin ...

  9. python和对象复习_python 面向对象基础和高级复习

    面向对象基础 面向对象编程 面向过程编程:类似于工厂的流水线 优点:逻辑清晰 缺点:扩展性差 面向对象编程:核心是对象二字,对象属性和方法的集合体,面向对象编程就是一堆对象交互 优点:扩展性强 缺点: ...

  10. 从0基础学习Python(13)[面向对象思想]

    从0基础学习Python (Day13) 面向对象思想 1.面向对象编程介绍 面向对象 概述 ​ 目前软件开发技术中两种主流思想:面向过程.面向对象 ​ 面向过程思想出现较早,C语言 ​ 面向对象思想 ...

最新文章

  1. 关于Xbox live及其在中国的使用
  2. ASP.net core 使用UEditor.Core 实现 ueditor 上传功能
  3. Docker删除某个容器时失败解决方案
  4. C++ vector使用示例
  5. 火币生态链项目SuperNova与Poly Network达成战略合作
  6. 软件企业通常会犯近视和远视两个错误
  7. 2017-07-12(数据库)
  8. 李华《灵武二孝赞并序》中之“灵武”系指何地?
  9. 工商银行发消息说5星级服务器,工商银行5星级客户多吗?会刷星你也可以..
  10. 用R包TCGA-Assembler下载TCGA数据
  11. 我是不是该安静的走开
  12. (翻译)优秀价格表的7种设计策略
  13. The service cannot be activated because it does not support ASP.NET compatibility
  14. 【RPC】分布式一致性与一致性协议
  15. ‘∞‘ is not a valid numeric or approximate numeric value
  16. UOS20 终端误删除之后的处理
  17. vbs做一个会动的进度条_重装系统前后都需要做哪些工作?这几点需注意!
  18. 在计算机内部 磁盘0说明什么,磁盘0和磁盘分区1是什么意思
  19. Java多线程写文件
  20. Android 和 iOS 孰优孰劣:真实应用开发过程告诉你答案

热门文章

  1. IterNet——迭代式U-Net变形
  2. EXE文件加密器(最新版V5.3)
  3. 在C#中实现将PPT 转换为 PPTX,开发小白的Aspose操作指南
  4. java获取请求者真实的公网ip地址
  5. 华为首款鸿蒙平板发布,华为发布首款鸿蒙平板,全面提升平板行业创新能力
  6. Aspose.Slides For .Net v19.6有哪些功能亮点?我们用示例说话!
  7. C语言实现老鼠走迷宫(附源码)
  8. 一行命令搞定mac安装git(mac 12.2.1版本 )
  9. 2008服务器系统如何设置桌面,Windows server 2008系统基础优化技巧
  10. 升压芯片MAX1771学习(1) ----2020.2.20