详解Python面向对象编程(一)

类和对象

面向过程——怎么做?
(1)把完成某一需求的所有步骤、从头到尾,逐步实现
(2)根据开发需求,将某些功能独立的代码块封装成一个又一个的函数
(3)最后完成的代码,就是顺序地调用不同的函数
面向对象——谁来做?
(1)在完成某一需求之前,首先确定职责——要做的事情(方法)
(2)根据职责确定不同的对象,在各个对象内封装不同的方法(赋予每个对象不一样的能力,从而承担不一样的职责)
(3)最后完成代码,就是顺序地让不同的对象调用不同的方法
总结:相比较函数封装,对象是更大的封装,不仅将功能独立的代码块封装成一个方法,更将多个方法封装到一个对象中
0-1、类(一张飞机的设计图纸)
是对具有相同特征和行为的一类事物的统称,是抽象的,不能直接使用的;可以看作一个模板,是负责创建对象的
特征:属性
行为:方法
0-2、对象(根据设计图纸,制造的一辆真实的飞机)
是由类创建出来的一个具体存在,是可以直接使用的;
由哪一个类创建出来的对象,就具有哪一个类的属性和方法
0-3、类和对象的关系
程序开发中,先有类,再有对象
类只有一个,而对象可以有多个;
类中定义了什么属性和方法,对象中就有什么属性和方法;
不同的对象之间属性的具体值(形参)可以是各不相同的(比如由同一张图纸创建出来的三辆飞机颜色可能各不相同)
0-4、类的设计
先确定需要哪些类;一个类需要包含以下三个元素:
(1)类名:这类事物的名字
大驼峰命名法:每一个单词的首字母大写,单词与单词之间无下划线
(2)属性:这类事物具有什么样的特征(常用名词命名)
对象具有的特征(名词),通常可以定义为属性
(3)方法:这类事物具有什么样的行为(常用动词命名)
对象具有的动作(动词),通常可以定义为方法
例子:
在这里插入图片描述

面向对象的基础语法

1-1、 dir()内置函数
在python中,变量、数据和函数都是对象,调到用dir()函数可以查看对象内的所有属性和方法
如:dir(demo) 会返回demo这个类的所有属性和方法
其中:方法名 格式的方法是python内置的方法/属性
在这里插入图片描述
1-2、定义简单的类*
在一个类中封装多个方法,这样通过这个类创建的对象就可以直接调用这些方法
(1)定义只包含方法的类

class 类名:

    def 方法名一(self,参数列表)pass
      
    def 方法名二(self, 参数列表)pass

(2)创建对象

对象变量 = 类名()

(3)第一个面向对象的程序
例子:小猫爱喝水,小猫爱吃鱼
分析:定义一个猫类;定义两个方法(eat、drink);按照需求,不需要定义属性

class Cat:
 
     def eat(self):
          print("小猫爱吃鱼")
          
     def drink(self):
          print("小猫爱喝水")
# 创建猫对象(等号右边负责创建对象,等号左边负责对这个对象进行引用)
tom = Cat()
# 调用猫方法
tom.eat()
tom.drink()
# 返回tom对象是由哪一个类创建的以及这个对象在内存中的地址
print(tom)
# 返回tom对象的地址(16进制)
addr = id(tom)
# 转换为10进制
print("%d" % addr)
# 转化为16进制
print("%x" % addr)

在这里插入图片描述
(4)案例改造-给对象增加属性
方法:在类外部代码上直接通过 :对象名.新增属性名 = 属性值
在这里插入图片描述这种方法简单,但不推荐使用,因为对象的属性和方法应当封装在类的内部,而不应该在类的外部来添加
在这里插入图片描述
并且lazy_cat的并没有增加属性name,说明各个对象之间是相互独立的,对一个对象进行增加属性的操作并不会影响其他的对象。

1-3、self是什么
——在类封装的内部,self就表示当前调用方法/属性的对象自己;
self就是创建的对象本身,哪一个对象调用这个方法,self就是哪一个对象的引用
在这里插入图片描述
1-4、 在类的外部给对象增加属性的问题
在这里插入图片描述
会出现找不对该属性的问题,因此对象需要包含哪些属性,应该封装在类的内部!

初始化方法

2-1 、什么是初始化方法
当使用类名创建对象时,会自动执行以下操作:
(1)创建对象——为对象在内存中分配空间
(2)初始化方法(init)——为对象的属性设置初始值
init:内置的方法,专门用来定义一个类具有哪些属性的方法
在这里插入图片描述
2-2 、在初始化方法内部定义属性
(1)在__init__方法内部使用 self.属性名 = 属性的初始值 就可以定义属性
(2)定义属性之后,使用该类创建的对象,都会拥有该属性
在这里插入图片描述
2-3 、__str__方法
在用print输出对象变量时,能够打印自定义的内容,该方法必须返回一个字符串:
在这里插入图片描述
2- 4、 案例
在这里插入图片描述
总结:在对象的方法内部,是可以直接访问对象的属性的;
同一个类创建的各个对象之间是互不干扰的;

相关推荐

  1. python面向对象详解

    2024-03-26 12:48:05       22 阅读
  2. 面向对象编程

    2024-03-26 12:48:05       35 阅读
  3. 面向对象编程

    2024-03-26 12:48:05       43 阅读
  4. Python面向对象编程

    2024-03-26 12:48:05       62 阅读
  5. Python面向对象编程

    2024-03-26 12:48:05       39 阅读
  6. python面向对象编程

    2024-03-26 12:48:05       33 阅读
  7. python面向对象编程

    2024-03-26 12:48:05       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 12:48:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 12:48:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 12:48:05       82 阅读
  4. Python语言-面向对象

    2024-03-26 12:48:05       91 阅读

热门阅读

  1. 富格林:正确析辨虚假受害陷阱

    2024-03-26 12:48:05       42 阅读
  2. 全面认识“服装ERP系统”,读这一篇就够了!

    2024-03-26 12:48:05       37 阅读
  3. kubernetes- ingress-gateway-istio_gateway的区别

    2024-03-26 12:48:05       32 阅读
  4. IOS面试题编程机制 26-30

    2024-03-26 12:48:05       30 阅读
  5. list转树形,亲测可用

    2024-03-26 12:48:05       39 阅读
  6. 【Docker】Airflow Scheduler 容器部署

    2024-03-26 12:48:05       33 阅读
  7. 如何系统地自学 Python?

    2024-03-26 12:48:05       45 阅读
  8. # 14 React 自定义Hook详解

    2024-03-26 12:48:05       41 阅读
  9. [python]tensorflow与keras对应关系表

    2024-03-26 12:48:05       35 阅读
  10. 爬虫第4课:get请求

    2024-03-26 12:48:05       41 阅读
  11. react 祖孙关系传递

    2024-03-26 12:48:05       44 阅读