python基础知识(17)面向对象 1

一、面向对象的概念

1、面向对象的两个基本概念

编程语言中,一般有两种编程思维,面向过程和面向对象。

面向过程,看重的是解决问题的过程。

这好比我们解决日常生活问题差不多,分析解决问题的步骤,然后一步一步的解决。

而面向对象是一种抽象,抽象是指用分类的眼光去看世界的一种方法。

Python 就是一门面向对象的语言,

如果你学过 Java ,就知道 Java 的编程思想就是:万事万物皆对象。Python 也不例外,在解决实际问题的过程中,可以把构成问题事务分解成各个对象。

面向对象都有两个基本的概念,分别是类和对象。

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

  • 对象

通过类定义的数据结构实例

2、面向对象的三大特性

面向对象的编程语言,也有三大特性,继承,多态和封装性。

  • 继承

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

例如:一个 Dog 类型的对象派生自 Animal 类,这是模拟"是一个(is-a)"关系(例图,Dog 是一个 Animal )。

  • 多态

它是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。

  • 封装性

"封装"就是将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即类);封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,一特定的访问权限来使用类的成员。

如果你是初次接触面向对象的编程语言,看到这里还一脸懵逼,不要紧,这是正常的。下面我们会通过大量的例子逐步了解 Python 的面向对象的知识。

二、类的定义和调用

1、怎么理解类?

类是什么?

个人认为理解类,最简单的方式就是:类是一个变量和函数的集合。

可以看下下面的这张图。

这张图很好的诠释了类,就是把变量和函数包装在一起。

当然我们包装也不是毫无目的的包装,我们会把同性质的包装在一个类里,这样就方便我们重复使用。

所以学到现在,你会发现很多编程的设计,都是为了我们能偷懒,重复使用。

2、怎么定义类

知道了类是什么样子的,我们接下来就要学习怎么去定义类了。

类定义语法格式如下:

复制代码
class ClassName():
    <statement-1>
    .
    .
    .
    <statement-N>

可以看到,我们是用 class 语句来自定义一个类的,其实这就好比我们是用 def 语句来定义一个函数一样。

竟然说类是变量和方法的集合包,那么我们来创建一个类。

复制代码
class ClassA():
    var1 = 100
    var2 = 0.01
    var3 = '两点水'

    def fun1():
        print('我是 fun1')

    def fun2():
        print('我是 fun1')

    def fun3():
        print('我是 fun1')

你看,上面我们就定义了一个类,类名叫做 ClassA , 类里面的变量我们称之为属性,那么就是这个类里面有 3 个属性,分别是 var1 , var2var3 。除此之外,类里面还有 3 个类方法 fun1() , fun2()fun3()

3、怎么调用类属性和类方法

我们定义了类之后,那么我们怎么调用类里面的属性和方法呢?

直接看下图:

这里就不文字解释了(注:做图也不容易啊,只有写过技术文章才知道,这系列文章,多耗时)

好了,知道怎么调用之后,我们尝试一下:

三、类方法

1、类方法如何调用类属性

通过上面我们已经会定义类了,那么这里讲一下在同一个类里,类方法如何调用类属性的。

直接看个例子吧:

注意看,在类方法上面多了个 @classmethod ,这是干嘛用的呢?

这是用于声明下面的函数是类函数。其实从名字就很好理解了。

class 就是类,method 就是方法。

那是不是一定需要注明这个呢?

答案是是的。

如果你没使用,是会报错的。

如果没有声明是类方法,方法参数中就没有 cls , 就没法通过 cls 获取到类属性。

因此类方法,想要调用类属性,需要以下步骤:

  • 在方法上面,用 @classmethod 声明该方法是类方法。只有声明了是类方法,才能使用类属性
  • 类方法想要使用类属性,在第一个参数中,需要写上 cls , cls 是 class 的缩写,其实意思就是把这个类作为参数,传给自己,这样就可以使用类属性了。
  • 类属性的使用方式就是 cls.变量名

记住喔,无论是 @classmethod 还是 cls ,都是不能省去的。

省了都会报错。

2、类方法传参

上面我们学习了类方法如何调用类属性,那么类方法如何传参呢?

其实很简单,跟普通的函数一样,直接增加参数就好了。

这个就直接上例子了:

相关推荐
重生之我在20年代敲代码1 分钟前
strncpy函数的使用和模拟实现
c语言·开发语言·c++·经验分享·笔记
爱上语文2 分钟前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
waterHBO1 小时前
python 爬虫 selenium 笔记
爬虫·python·selenium
编程零零七2 小时前
Python数据分析工具(三):pymssql的用法
开发语言·前端·数据库·python·oracle·数据分析·pymssql
2401_858286113 小时前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py3 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy3 小时前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
AIAdvocate4 小时前
Pandas_数据结构详解
数据结构·python·pandas
小言从不摸鱼4 小时前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
C-SDN花园GGbond5 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法