Python零基础入门篇 - 34 - 五分钟快速带你了解什么是面向对象编程

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

class Nmae(object):

class关键字 + 类名(首字母大写) + 小括号(括号内填写 object:为python中的通用对象,书写通用对象的 class 会带有更多的内置功能) + 冒号

变量 = 变量的值

可以定义 类 的变量

def func(self):

do

也可以定义 类 的函数:类函数内有个必传参数 ‘self’ ,一定要书写在类函数的第一参数位,这是 python 内部的语法规定

需要注意的是 类的属性与函数的缩进要统一

类的使用示例如下:

定义一个动物类;动物类中定义一个变量;定义一个 跑 的函数(属性)

class Animal(object): # 定义一个类

name = ‘哈士奇’ # 类变量(类属性)

def run(self): # 类函数:将 self 作为第一个参数传入 类函数 ‘run()’

print(f’{self.name} can run’)

'self.name’为类属性,如果不加上’self.‘则不会找到类属性;如果想要在类函数中调用类属性就必须加上’self.’

‘self’ 参数具备两个功能

1.可以帮助我们调用类属性

2.将使用 self 的函数调用到类中,如果我们有另一个函数,可以在另一个函数中通过 ‘self.’ 来进行调用 run 函数

dog = Animal() # 类的实例化

print(dog.name) # 通过实例化进行属性调用

dog.run() # 通过实例化,进行函数调用

>>> 执行结果如下:

>>> 哈士奇

>>> 哈士奇 can run

类的参数 - self

在类里面,所有实例方法都需要加 self 参数,且排在第一个,有且仅有一个。

self 参数的含义 :在类中定义的方法,第一个参数 self 指向调用该方法的实例对象,在方法中通过 self.属性 这样的形式访问对象的实例属性

  • self 是 类函数 中的必传参数,且必须放在第一个参数位置

  • self 是一个对象,它代表着实例化的变量自身

  • self 可以直接通过点(.)来定义一个类变量 如 self.name = Neo ,如果在函数体内定义变量可以通过 self + . +变量名 来进行赋值。

  • self 中的变量与含有 self参数的函数可以在类中的任何一个函数内随意调用

  • 非函数中定义的变量在定时的时候不需要使用 self

如何理解 self 参数
类比
  • 如果把 类 比作造房子的图纸

  • 类实例化 后的对象是真正可以住的房子

  • 根据一张图纸(类),可以设计出成千上万的房子(实例对象)

  • 每个房子长相都是类似的(都有相同的实例属性和实例方法),但它们都有各自的主人

  • 如何区分不同的房子:通过 self 参数,可以保证每个房子的主任仅能进入自己的房子(每个实例对象只能调用自己的实例属性和实例方法)

重点
  • 一个类可以产生多个实例对象,当某个实例对象调用实例方法,该对象会把自身的引用作为第一个参数自动传递给该方法

  • 换句话说:Python 会自动将实例方法的第一个参数指向调用该方法的对象

  • 这样,Python 解释器就知道到底要执行哪个对象的实例方法了

  • 调用实例方法的时候,不需要手动为第一个参数传值

可能大家还不是很理解,根据类的两个关键要素属性和方法,具体来使用self看看实际应用效果:

class Persion(object):

name = None

age = None

def run(self):

print(f’{self.name} 的健身项目是’跑步’')

def swim(self):

print(f’{self.name} 的健身项目是’游泳’')

neo = Persion()

neo.name = ‘Neo’

neo.run()

>>> 执行结果如下:

>>> Neo 的健身项目是’跑步’

我们再重新实例化一个对象,看看这个新的实例化对象是否同步了 neo.name

class Persion(object):

name = None

age = None

def run(self):

print(f’{self.name} 的健身项目是’跑步’')

def swim(self):

print(f’{self.name} 的健身项目是’游泳’')

neo = Persion()

neo.name = ‘Neo’

neo.run()

jack = Persion()

jack.run()

>>> 执行结果如下:

>>> Neo 的健身项目是’跑步’

>>> None 的健身项目是’跑步’

从输出结果可以看到 我们修改的 neo 实例化对象的对应的 name 的值仅作用于自己的实例,而 Persion 类,与新的 jack 实例化对象并没有受到影响。

所以即使使用新的对象进行实例化,还是需要新的实例化对象来修改类的属性,来达到我们自己想要的效果。其实很好理解,都是人类,但是每个人的个体化都是不同的。所以他们拥有人类的共同属性后 (name,age) ,也可以自定义自己的属性。

现在我们的 Persion 类 定义了两个属性 'name' 与 'age' ,如果我们再添加一个属性呢? ,其实是可以的。现在我们针对 'Jack' 增加一个自定义属性 ,尝试一下。

class Persion(object):

name = None

age = None

def run(self):

print(f’{self.name} 的健身项目是’跑步’')

def swim(self):

print(f’{self.name} 的健身项目是’游泳’')

neo = Persion()

neo.name = ‘Neo’

neo.run()

jack = Persion()

jack.top = 180

print('‘Jack’的身高是’, jack.top)

>>> 执行结果如下

>>> Neo 的健身项目是’跑步’

>>> 'Jack’的身高是 180

print('‘Neo’的身高是’, neo.top)

>>> 执行结果如下:

>>> AttributeError: ‘Persion’ object has no attribute ‘top’

从上面的 jack.topneo.top 的自定义属性,我们发现三件事。

  • 1.实例化对象可以自定义属性

  • 2.每个实例化对象自己定义的属性与其他实例化对象不通用。

  • 3.Persion类在实例化对象之后,依然只有自己的两个属性 (name 和 age) ,实例化对象自定义的属性仅作用于自己,并不影响

self 的解析与总结

说实话,关于 Python 中的 self 我一开始接触的时候,也是给我搞的云里雾绕、五迷三道的…这里做个总结,希望对同样云里雾绕、五迷三道的童鞋有所帮助。

  • Python 中 self 代表的是 类的示例 ; self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

  • Python 中 self 只有在针对 类 的情况下,才是有意义的。

  • self 只能用在 python 类 的方法中。

具体的举例说明如下:

属性
  • 关于属性 - 1:如果变量定义在类下面而不是类的方法下面,那这个变量既是类的属性也是类实例的属性。

class Cat(object):

eyes = ‘有2只眼睛’

legs = ‘有4条腿’

tail = ‘有1只尾巴’

dragonLi = Cat()

dragonLi.name = ‘狸花猫’

dragonLi_eyes = dragonLi.eyes

dragonLi_legs = dragonLi.legs

dragonLi_tail = dragonLi.tail

print(’ 猫 ’ + Cat.eyes, Cat.legs, Cat.tail)

print(dragonLi.name, dragonLi_eyes, dragonLi_legs, dragonLi_tail)

>>> 执行结果如下:

>>> 猫 有2只眼睛 有4条腿 有1只尾巴

>>> 狸花猫 有2只眼睛 有4条腿 有1只尾巴

  • 关于属性 - 2:如果变量定义在类的方法下面,如果加了self,那这个变量就是类实例的属性,不是类的属性;如果没有加self,这个变量只是这个方法的局部变量,既不是类的属性也不是类实例的属性。

class Cat(object):

eyes = ‘有2只眼睛’

legs = ‘有4条腿’

tail = ‘有1只尾巴’

def init(self): # 关于__init__() 会在下面的 '类的构造器’有详细讲解

self.color_01 = ‘黄棕色’

color_02 = ‘黑棕色’

dragonLi = Cat()

dragonLi_color_01 = dragonLi.color_01

print(‘狸花猫有两种披毛颜色,一种是:’, dragonLi_color_01)

>>> 执行结果如下:

>>> 狸花猫有两种披毛颜色,一种是: 黄棕色

dragonLi_color_02 = dragonLi.color_02

print(‘狸花猫有两种披毛颜色,另一种是:’, dragonLi_color_02)

>>> 执行结果如下:

>>> AttributeError: ‘Cat’ object has no attribute ‘color_02’.

方法

关于方法1:如果在类中定义函数时加了self,那这个函数是类实例的方法,而不是类的方法。

class Cat(object):

def eat(self):

print(‘爱吃鱼’)

dragonLi = Cat()

dragonLi.eat()

>>> 执行结果如下:

>>> 爱吃鱼

Cat.cat()

>>> 执行结果如下:

>>> TypeError: Cat.eat() missing 1 required positional argument: ‘self’

关于方法2:如果在类中定义函数时候没有加self,那这个函数就只是类的方法,而不是类实例的方法。

class Cat(object):

def eat():

print(‘爱吃鱼’)

Cat.eat()

>>> 执行结果如下:

>>> 爱吃鱼

dragonLi = Cat()

dragonLi.eat()

>>> 执行结果如下:

>>> TypeError: Cat.eat() takes 0 positional arguments but 1 was given

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
mg.cn/a353983317b14d3c8856824a0d6186c1.png)

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-IOMsFqme-1713380492269)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值