当前位置: 首页 > news >正文

Python学习第十三天--面向对象,类和对象

一、面向过程和面向对象区别

面向过程:需要实现一个功能时,着重的是开发的步骤和过程,每个步都需要自己亲力亲为,需要编写代码(自己来做)

面向对象:需要实现一个功能时,不注重的是开发的步骤和过程,关心的是谁来帮我做这件事。

二、类与对象

类是一个抽象的概念,对象是一个实实在在的概念

1、类

类名习惯使用大驼峰命名法:首字母大写,私有类可用一个下划线开头

1)类的定义

class Test:pass #空类中使用pass
class Test:food = "chicken"def info(self):  #self指的是创建出来的对象print(self)  #打印当前对象的地址

2)类中包含内容

属性:实际上为类中定义的变量,该变量为属性

方法 :类中定义的函数

3)查看类的属性

Test.__dict__>> {'__module__': '__main__', 'food': 'chicken', 'info': <function Test.info at 0x0000018F068BD1F0>, '__dict__': <attribute '__dict__' of 'Test' objects>, '__weakref__': <attribute '__weakref__' of 'Test' objects>, '__doc__': None}

4)查看单个属性的内容

Test.__dict__["food"]>> chicken

5)增删改查类中的单个属性

改:Test.food = "beef"

删:del Test.food

增:Test.drink = "tea"

2、对象

1)创建对象

对象名=类名()

a = Test()
a.info()  #此处self为a

2)增删改查对象中的单个属性

改:a.food = "beef"

删:del a.food

增:a.drink = "tea"

3)在方法内通过self获取对象属性 

class Test():food = "chicken"def info(self):  #self指的是创建出来的对象print(self.food)a = Test()
a.info()>> chicken

 3、实例属性和类属性的区别

class B:num = 0   #类属性def __init__(self,name):self.name = name    #实例属性def test(self):print(self.name)

三、构造函数

def __init__():

__init__()具有初始化作用,当该类被实例化时会自动执行该函数。那么通常可把要初始化的属性放在这个方法里去

无参构造:def __init__(self):

有参构造:def __init__(self,参数1,参数2...):

构造函数无返回值,一个类中只有一个构造函数

四、析构函数

def __del__(self):

析构函数用于在对象被清除后清除他所占用的内存空间,主要用于对那些长期占用内存的临时变量进行销毁

析构函数没有参数,无返回值,一个类中只有一个析构函数,在跳出对象作用域时会自动调用析构函数。可以在析构函数中加入输出语句,在看到输出语句内容时就表示该对象已被销毁

手动执行析构函数:del 对象名

五、__str__()方法

1、作用

能够在输出对象变量时打印自定义内容。

没有该方法时,输出的是对象的地址;使用该方法时,输出为该方法返回的自定义内容

2、注意

  1. __str__()必须返回一个字符串;
  2. 定义了 __str__()方法,在打印对象时,默认输出该方法的返回值

3、例子

class B:def __str__(self):return "this is my new name"b = B()
print(b)>> this is my new name

http://www.lryc.cn/news/492527.html

相关文章:

  • AI运用落地思考:如何用AI进行系统运维?
  • springboot学习-分页/排序/多表查询的例子
  • windows 应用 UI 自动化实战
  • ffmpeg命令详解
  • 【漏洞复现】CVE-2022-43396
  • 文件的摘要算法(md5、sm3、sha256、crc)
  • 如何借助AI生成PPT,让创作轻松又高效
  • 云技术-docker
  • 对docker安装的mysql实现主从同步
  • 【不定长滑动窗口】【灵神题单】【刷题笔记】
  • AI写论文指令
  • 2625扁平化嵌套数组
  • QT6学习第五天 第一个QT Quick程序
  • 【开发商城系统】
  • (11)(2.2) BLHeli32 and BLHeli_S ESCs(二)
  • C++ 11重点总结1
  • 海康VsionMaster学习笔记(学习工具+思路)
  • 基于Python语言的Web爬虫设计源码
  • 学习日志 --A5rZ
  • JVM_垃圾收集器详解
  • Javascript Insights: Visualizing Var, Let, And Const In 2024
  • KL散度改写为一个可用于优化的形式
  • Java代码操作Zookeeper(使用 Apache Curator 库)
  • 【Linux】Make/Makefile
  • C++练级计划->《多态》虚函数表,菱形继承多态
  • OkHttp3 - 2. OkHttp的核心组件与架构
  • 异或操作解决一些问题
  • 操作系统之输入输出
  • Centos 安装 Node.js 和 npm
  • C语言——指针初阶(一)