Python零基础入门教程 14.类与对象
类与对象 大纲
- 前言
- 创建类与实例
- 实例属性
- 构造方法
- 实例方法
- 总结
前言 面向对象最重要的两个概念就是类(Class)和对象(Object),对象也可以称为实例(Instance)
类相当于一个模板,而实例就是根据这个模板创建出来的,每个实例都有相同的方法(功能),但可能它们的数据不一样
文章图片
【Python零基础入门教程 14.类与对象】有一个歌手类,四大天王是歌手类的实例,虽然他们唱功都很厉害,但他们歌的风格不尽相同(相同的行为,不同的数据)
创建类与实例 可以通过关键词class来创建一个类,比如创建一个Dog类
class Dog: pass
Dog类的内容用pass占位,表示我们的Dog类什么也没做,后面再慢慢丰满它
创建完类后,就可以通过它来创建实例
比如创建两个dog实例
dog1 = Dog() dog2 = Dog()
实例属性 dog应该要有个名字,我们可以给两个dog实例添加上name这个属性,来表示它们是不同的dog
dog1.name = '小白' dog2.name = '小黑'print('我是dog1,我叫' + dog1.name) print('我是dog2,我叫' + dog2.name)
所以可以通过实例.属性这样的语法来查看/设置某个实例的属性
构造方法 用上面的方法来给实例设置属性非常麻烦,比如来了一个新dog,叫大黄,就要
dog3 = Dog() dog3.name = '大黄' print(dog3.name)
需要两行代码,非常麻烦,有没有更方便的办法呢?
可以在创建实例时,就给实例绑定上属性
利用 __init__ 魔法方法就可以做到,它会在创建实例时被调用
利用它,我们可以把Dog类改造成下面这个样子
class Dog: def __init__(self, name): print(name, '实例正在被创建...') self.name = namedog1 = Dog('小白') dog2 = Dog('小黑') dog3 = Dog('大黄') print(dog3.name) # 小白 实例正在被创建... # 小黑 实例正在被创建... # 大黄 实例正在被创建... # 大黄
看到def,你可能看出了,方法不就是函数吗
是的,方法其实就是函数,只不过在类中定义的函数与普通的函数有些不同,它多了一个self参数,而且看到我们在调用时也没有传递self参数,只传了name参数
这是因为在调用方法时,Python解释器会把self给传进去,并不需要我们主动传
self变量永远指向调用它的实例,后面我们再加深理解
实例方法 目前我们可爱的dog只有一个名字,但是讲道理
dog应该要有年龄(数据),它还可以唱、跳、rap(行为/功能)
文章图片
下面我们给Dog类增加一个age属性,然后再增加一些"动作"
class Dog: """ 我们的狗有姓名有年龄 还会跑、会打招呼 skr! """ def __init__(self, name, age): self.name = name self.age = age def about_me(self): """ 自我介绍 """ print('大家好,我是', self.name, '今年', self.age, '岁') def run(self): """ 用于让doge跑起来 """ print(self.name + '溜了...') def hi(self, other): """ 用于让doge向别人打招呼 """ print('汪汪汪, how are you? ', other)dog3 = Dog('大黄', 2) dog3.about_me() dog3.hi('观众朋友') dog3.run()
ok,那么
about_me
、run
、hi
这三个方法就是实例方法,它们的调用方法除self外和普通函数一模一样,参数必须对应上,否则会报错总结 这节课讲了Python面向对象的基础知识
我们通过创建类/实例成功让dog有了实体,通过实例属性与方法让它变得更真实,终于有点那味儿了
下节课接着深入面向对象
推荐阅读
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- 日志打卡
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)
- Python(pathlib模块)
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- Java|Java基础——数组