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、类方法传参

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

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

这个就直接上例子了:

相关推荐
Elihuss2 小时前
ONVIF协议操作摄像头方法
开发语言·php
Swift社区5 小时前
在 Swift 中实现字符串分割问题:以字典中的单词构造句子
开发语言·ios·swift
没头脑的ht5 小时前
Swift内存访问冲突
开发语言·ios·swift
没头脑的ht5 小时前
Swift闭包的本质
开发语言·ios·swift
wjs20245 小时前
Swift 数组
开发语言
stm 学习ing6 小时前
FPGA 第十讲 避免latch的产生
c语言·开发语言·单片机·嵌入式硬件·fpga开发·fpga
湫ccc7 小时前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe8 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin8 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python