关于类的理解

这章学了类,便用这篇笔记总结复习一下,关于对类的理解和类的相关知识(其中一些废话只是个人理解) 如有错误还望指正

类的概念

类:类是对象的一个抽象的概念 ,而对象(实例)就是由类创建的实例。。。

对于此,我的理解是对象(实例)就是一个活生生的事物,像一辆飞驰在公路上的宝马X5(宝马打钱!)就是一个实例,而当提起汽车时,我们脑海中出现的有四个轮子的帅气玩意就是我们从平时见过的实例中抽象出来的类,所以类不是一个具体的东西,而是对一类事物的概括,我们可以通过类去拓展、塑造一个对象(实例)

类和对象的关系就是 模具与铸件的关系

  1. 类是由对象总结而来的,总结的这个过程叫做抽象
  2. 对象是由类具体实施出来的,这个过程叫做实例化

代码示例:

#类的创建 将汽车特点作为类中成员
class car():brand = '品牌'color = '颜色'pailiang = 2.0  # 排量def __init__(self, brand, color, pailiang=2.0):self.brand = brandself.color = colorself.pailiang = pailiang#对象创建 将具体的特点赋予类中的成员
bwm = car('宝马','白色','2.3')
benz = car('奔驰','黑色','2.0')

类的特点

封装

类可以将自身的属性和成员进行封装达到保护和隐藏的目的
被封装的成员主要是供类的内部使用 被特殊语法封装的成员,会有不同的访问的权限
比如:汽车蓝图(类)中有商业机密,不能全部公开,得把其中重要部分保护和隐藏

封装的级别

封装的级别成员   ==> 公有的_成员  ==> 受保护的 (约定俗成,而python没有具体实现)__成员 ==> 私有的公有的 public    受保护的 protected     私有的 private
在类的内部      OK              OK                 OK
在类的外部      OK              No(python可以)      No

继承

提高代码的重用性,建立新的类与类的关系,方便其它逻辑的操作

语法格式:

class 父类():passclass 子类(父类):pass

多态

对于同一个方法,由于调用的对象不同,产生了不同形态的结果

class car():brand = '品牌'color = '颜色'speed = 100 # 排量def __init__(self, brand, color, speed=100):self.brand = brandself.color = colorself.speed = speeddef run(self):print(f'我最快能跑{self.speed}km/h')bwm = car('宝马','白色','200')
benz = car('奔驰','黑色','210')
bwm.run()
benz.run()

类的魔术方法

魔术方法就是不需要手动调用就可以自动执行的方法
关于类中的魔术方法我觉得像已经造好的轮子,甚至不需要去调用它就能发挥作用,也可以在类中将它调用出来按照自己的需要去修改,以满足自己的要求

注意:有返回值的一定要按要求去写返回值,不然可能原有的功能会失效

1. __init__ 初始化方法  *****触发机制:当实例化对象之后就会立即触发的方法作用:   为当前创建的对象完成一些初始化的操作,比如:成员属性的赋值,方法的调用,打开或创建一些资源。。参数:   一个self,接受当前对象,其它参数根据需求进行定义即可返回值: 无注意事项:无2. __new__ 构造方法    ****触发机制:实例化对象时自动触发(在__init__之前触发)作用:   管理控制对象创建的过程参数:   一个cls 接收当前类,其它参数根据初始化方法的参数进行决定返回值: 必须返回object.__new__(cls)进行对象的创建,如果没有返回值,则实例化对象的结果为None注意事项:__new__方法的参数和__init__方法的参数要保持一致,除了第一个参数必须返回object.__new__(cls)进行对象的创建,如果没有返回值,则实例化对象的结果为None应用场景:设计模式中的单例设计模式3. __del__ 析构方法    *****触发机制:当该类对象被销毁时,自动触发作用: 关闭或释放对象创建时打开或创建的一些资源参数: 一个self,接受当前的对象返回值:无注意事项: 无4. __call__          ***触发机制: 把对象当作函数直接调用时自动触发作用:    一般用于归纳类或对象的操作步骤,方便调用参数:   一个self接收当前对象,其它参数根据调用需求缺点返回值:  可有可无5.__len__触发机制: 当使用len函数去检测当前对象的时候自动触发作用:    可以使用len函数检测当前对象中某个数据的信息参数:    一个self 接收当前对象返回值:  必须有,并且必须是一个整型注意事项:len要获取什么属性的值,就在返回值中返回哪个属性的长度即可6.__str__触发机制: 当使用str或者print函数对对象进行操作时自动触发作用:   代码对象进行字符串的返回,可以自定义打印的信息参数:  一个self,接收当前对象返回值: 必须有,而去必须是字符串类型的值7.__repr__触发机制:在使用repr方法对当前对象进行转换时自动触发作用: 可以设置repr函数操作对象的结果参数:  一个self,接收当前对象返回值: 必须有,而去必须是字符串类型的值注意:正常情况下,如果没有__str__这个魔术方法,__repr__方法就会代替__str__魔术方法8.__bool__触发机制: 当前使用bool函数转换当前对象时,自动触发.默认情况下,对象会转为True作用:    可以代替对象进行bool类型的转换,可以转换任何数据参数 :   一个self 接收对象返回值: 必须是一个布尔类型的返回值

类成员函数可以返回该类的实例吗_关于类的理解相关推荐

  1. C++ 函数指针 类成员函数指针

    一.函数指针 函数存放在内存的代码区域内,它们同样有地址.如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址. 1.函数 ...

  2. 详解函数指针和类成员函数指针

    作者:倾夜·陨灭星尘 一.什么是函数指针? 函数指针,顾名思义即指向函数的指针. 如果要问,为什么能用一个指针指向一个函数呢?我觉得要理解这个问题,以及要理解后面的函数指针和类成员函数指针,没有什么比 ...

  3. 2021-03-10 模板扩展类调用模板基类成员函数

    侯捷书内 : 扩展模板类 内通过  this->  指模板基类的成员函数,或通过   基类名::  的方式调用 基类成员函数 侯捷书内说: 扩展模板类,找不到模板基类的成员函数 但是在vs201 ...

  4. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

    1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...

  5. linux线程创建 类函数吗,linux多线程创建时使用类成员函数作为参数

    实际上所有线程都是用来处理C函数的,而不是C++类成员函数.标准库中提供一个API函数,这个函数以回调函数指针作为线程的执行代码并在单独的线程中调用回调函数.问题是在这样的线程库中不能创建执行对象成员 ...

  6. 如何让API回调你的VC类成员函数而不是静态函数

    首先需要包含一个由yzwykkldczsh同志编写的模板类-----万能多用自适应无限制回调模板(为纪念友人fishskin,此模板又称为H>W模板) /******************** ...

  7. C++运算符重载函数作为类成员函数和友元函数

    C++运算符重载函数作为类成员函数 1.1成员函数的重载运算符左侧是一个类对象,而且与运算符函数类型相同. 因为必须通过类的对象去调用该类的成员函数,而且只有运算符重载函数和返回值类型相同,运算结果才 ...

  8. 关于类成员函数中访问同类对象的私有成员

    关于类成员函数中访问同类对象的私有成员,主要包含以下几种场景: a. 在C++的类的成员函数中,允许直接访问该类的对象的私有成员变量. b. 在类的成员函数中可以访问同类型实例的私有变量. c. 拷贝 ...

  9. Python的类成员函数、静态函数和成员的函数的比较

    从声明方式来看: 普通成员函数是最一般的方法,即 class Foo:def plain_func():pass 类成员函数是 class Foo:@classmethoddef class_func ...

  10. 类和对象编程(一):类成员函数

    C++ 类成员函数 类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样.类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员. 让我们看看之前定义的 ...

最新文章

  1. 项目10天投产,测试仅剩2天,如何处理?
  2. 如何删除oracle用户数据库用户,oracle删除指定用户的原数据库,建立该用户的新数据库...
  3. Python笔记_第四篇_高阶编程_正则表达式_3.正则表达式深入
  4. 可视化分析js的内存分配与回收
  5. Linux进程全解4——fork创建子进程
  6. centos mysql 5.5 art_Linux CentOS6.5下编译安装MySQL 5.5.51''''
  7. Linux删除所有文件(作死命令,危险命令)
  8. 第4章字符串的实现-勘误
  9. MongoDB - 分片管理
  10. 洛谷P2881 [USACO07MAR]排名的牛Ranking the Cows(bitset Floyd)
  11. IE下载vsix插件踩坑
  12. 投资20亿元,又一个云手机基地诞生
  13. 天天向上的力量python代码解释_python天天向上的力量
  14. Aspose.Words for .NET Crack 23.1.0
  15. java查找_用Java如何实现搜索功能?
  16. Android The emulator process for AVD XXX has terminated.
  17. 基于xwiki部署企业内部知识管理平台
  18. 一种实现个人微信二维码收款接口的方法
  19. 神经网络优化(1)之梯度截断
  20. java女程序员工作_女生适合做java程序员吗 女java程序员好找工作

热门文章

  1. Java程序员们最常犯的10个错误
  2. 关于页面导航和数据传递的简单总结
  3. 用DataFormatString格式化GridView 【转】
  4. matlab进阶摸索篇——彩色图直方图均衡化
  5. 【编程语言】【Ruby】语言介绍
  6. 基于麻雀搜索的PID神经网络解耦控制算法 - 附代码
  7. 智能优化算法:粒子群算法相关代码
  8. MATLAB 图像处理基础(1)
  9. 双边滤波及其matlab代码
  10. java调用scala内部类_scala中的内部类 == 简单示例