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

【python笔记03】《类》

文章目录

  • 面向对象基本概念
    • 对象的概念
    • 类的概念
  • 类的定义
  • 类的创建(实例的模板)
  • 类的实例化--获取对象
  • 对象方法中的self关键字
  • 面试题
    • 请描述什么是对象,什么是类。
    • 请观阅读如下代码,判断是否能正常运行,如果不能正常运行,错误点在哪?

面向对象基本概念

OOA:面向对象分析analysis
OOD:面向对象设计design
OOP:面向对象编程programing(面向对象开发)

对象的概念

对象,object,业务逻辑的动作实体就对应着OOP编程中的一个对象

对象:属性(就是变量)、方法(就是函数(未来完成某个功能))
对象保存数据,方法操作数据

类的概念

python采用类产生对象,用类规定对象的属性和方法

为什么引入类
类是对现实世界的一种模拟,任何实体都有一个类别,类就是具有相同或相似属性和动作的一组实体的集合

class 人:
属性:name、age
方法:吃饭、跑、扯淡

面向对象:类和对象

  • 类是一个抽象概念(具有相同或相似属性和动作的一组实体的集合)
  • 对象是类实例化产生的具体事物
  • 一个对象的所有应该具有特征特性信息,都是由其所属的类来决定的,但是每个对象又可以具有不同的特征特性信息

比如,
我自己(人类)这个对象,名字叫老王,性别男,会写代码,会教书;
另一个对象(人类)可能叫赵薇,性别女,会演戏,会唱歌!

类的定义

经典的类(python2)(很少使用了):

class 类名:属性方法

新的类(python3):

class 类名(object):属性方法

object:基类

这就是一个类,只不过里面什么都没有!

类的创建(实例的模板)

类是相同或相似属性和方法的一组对象的集合,是一个抽象概念

class Person(object):# 属性  # 属性是什么下下面再讲# 方法def run(self):  # self是啥玩意,后面讲print('跑起来了👌')def eat(self):print('奥里给,干了!💩')def speak(self):print('随安不是同一时间,但是同一撤硕🚾')
  • 其中,类名既可以大写也可以小写,遵守一般的标识符的命名规则(以字母数字和下划线构成,并且不能以数字开头),一般为了和方法名相区分,类名的首字母一般大写!(大驼峰法:单词首字母大写)
  • 类在定义构成中,只是描述了一下未来这个对象所拥有的属性和方法,但是其本身并没有并调用,只有在实例化对象时其才真正执行

类的实例化–获取对象

  • 类是具有相同或相似属性或方法的一组对象的集合,其是一个抽象概念。要想把其创建为具体的对象,需要经过实例化的过程
  • 类是一个抽象概念,可以同时产生多个对象
  • 创建的对象都会有类的属性和方法
# 类的实例化
p1 = Person()  # p1就是对象
  • 对象的方法的调用
    对象名称.属性
    对象名称.方法()
p1.eat()
p1.speak()

类是一个抽象概念,在定义时,其并不会真正的占用计算机的内存空间。但是对象是一个具体的事务,所以其要占用计算机的内存空间。

对象方法中的self关键字

self参数和实例化产生的对象内存地址一致,代表两者指向相同的内存空间

self关键字就代表实例化对象本身

class Person(object):#属性#方法def speak(self):print(self)
#实例化p1对象
p1 = Person()
print(p1)   # 0x000001CE9D8D2C88
p1.speak()  # 0x000001CE9D8D2C88
p2 = Person()
print(p2)   # 0x00000209498CA448  # 打印的内容是内存地址
p2.speak()  # 0x00000209498CA448  # 内存地址都是一样的

面试题

请描述什么是对象,什么是类。

答案:
在面向对象编程中,类和对象是两个重要的概念,它们具有不同的含义和作用。

类是一种抽象的概念,用于定义对象的属性和行为。类是一种自定义的数据类型,可以看作是对象的模板或蓝图。它描述了对象具有的共同特征和行为,定义了对象的属性和方法。

类定义了对象的结构,包括数据成员(属性/实例变量)和函数成员(方法)。通过类,我们可以创建多个相似结构的对象,每个对象都具有相同的属性和方法。

类通常具有以下特征:

  • 定义了对象的属性(变量)和方法(函数)。
  • 可以被实例化为一个或多个对象。
  • 可以通过继承机制派生出子类。
  • 提供了封装、继承和多态等面向对象的特性。

对象是类的实例化结果,是类的具体实体。对象是在内存中分配的一块空间,用于存储数据和执行方法。当我们使用类创建对象时,我们可以访问和操作对象的属性和方法。

对象具有以下特征:

  • 具有唯一的标识(在内存中的地址)。
  • 具有状态(属性值)。
  • 可以执行类定义的方法。

简单来说,类是对对象的抽象描述,定义了对象的结构和行为。而对象是类的实例化结果,具体化了类的抽象概念,拥有自己的状态和行为。类是对象的模板,而对象是类的具体实例。

通过创建不同的对象,我们可以利用面向对象编程的特性,实现代码的复用、封装数据和行为,并且更好地组织和管理程序的逻辑结构。

请观阅读如下代码,判断是否能正常运行,如果不能正常运行,错误点在哪?

class Person():def eat(self):print('我喜欢吃零食')def drink(this):print('我喜欢喝果汁')p = Person()
p.drink()
Person.eat()

答案:
不可以正常运行,eat()方法的调用存在异常,应该用p对象进行调用,注意,drink(this)方法中写this用于替代self是可以的,不存在问题。

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

相关文章:

  • Flutter 应用在真机上调试的流程
  • 以太坊基础知识结构详解
  • 安全见闻(完整版)
  • LeetCode100之反转链表(206)--Java
  • 牛客周赛第一题2024/11/17日
  • 麒麟Server下安装东方通TongLINK/Q
  • BERT的中文问答系统33
  • Ubuntu下的Eigen库的安装及基本使用教程
  • 【spring 】Spring Cloud Gateway 的Filter学习
  • 每秒交易数(Transactions Per Second:TPS)详细拆解
  • 【初阶数据结构与算法】链表刷题之链表分割、相交链表、环形链表1、环形链表I、环形链表II
  • 【STL】set,multiset,map,multimap的介绍以及使用
  • 新能源二手车交易量有望破百万,二手车市场回暖了吗?
  • 哈佛商业评论 | 项目经济的到来:组织变革与管理革新的关键
  • web浏览器环境下使用window.open()打开PDF文件不是预览,而是下载文件?
  • 【GeekBand】C++设计模式笔记12_Singleton_单件模式
  • Pyhon基础数据结构(列表)【蓝桥杯】
  • Linux篇(权限管理命令)
  • 深入理解 Spark 中的 Shuffle
  • leetcode-8-字符串转整数
  • SQL注入注入方式(大纲)
  • OpenCV基础(1)
  • 【freertos】FreeRTOS信号量的介绍及使用
  • React Native 全栈开发实战班 - 图片加载与优化
  • Golang云原生项目:—实现ping操作
  • mysql如何查看当前事务的事务id
  • 在linux里如何利用vim对比两个文档不同的行数
  • 深入解析Python中的逻辑回归:从入门到精通
  • 【数据库】mysql数据库迁移前应如何备份数据?
  • C语言——鸡兔同笼问题