python对象和类 知乎_Python 类与对象

我们今天就一起聊一聊Python中类与对象的那些事儿~

本文共2473个字,阅读时长7分钟,建议先收藏后观看。

一、类与对象

1. 什么是对象(Object)

何谓对象???

你的小女朋友是你的对象,你的小男朋友也是你的对象(男男女女也成立(咳!咳!))。哲学一点来说,万物皆对象,来敲个重点,只要是客观存在的事物都是对象。

面向对象编程(Object Oriented Programming):正是一种以对象为中心的编程思想,它在软件设计、数据库设计、网络结构设计、人工智能算法等领域有着非常广泛的应用。

2.什么是类(Class)

举个简单的例子:大学表白墙找对象的公告写了一些条件:“180cm以上的男生,会打网球,学习好,阳光帅气...”。

那么正巧一个名叫手冢国光的男孩具备这些条件,这个手冢国光是客观存在的一个人,他就是对象(Object)。

而这些条件可以理解为类(Class),类是确定对象将会拥有的特征(属性)和行为(方法),它不是具体客观存在的东西。

总结一下类的特点:类是对象的类型。

类是具有相同属性和方法的一组对象集合(一个类可对应多个对象)。

怎么来理解呢?很明显手冢国光是客观存在的对象,她具有180cm的特征(属性),他会网球,会学习这些行为(方法)这就统称为类,换句话说可以理解为类型,比如你喜欢什么类型的女孩儿/男孩儿,他们所具备什么属性和行为。

3.对象的属性

对象的属性就是对象具备的各种特征,每个对象的每个属性都具有特定的值。说人话就是手冢国光这个对象来说她的属性是“性别 = 男;身高 = 180cm ”这就是对象的属性。

4.对象的方法

对象的方法就是对象执行的操作,也就是说对象能干什么?这就称为方法。比如手冢国光他的方法就是“学习、打网球”。

5.类与对象的关系和区别类是抽象的概念,仅仅代表事物的模板,比如说“女朋友”、“男朋友”。

对象是一个能够“看得到,摸得着的”具体的实体,比如手冢国光。

二、类的创建跟调用:(类的方法均指实例方法)

1.类的创建

来个例子:

#创建电脑类的示例代码

class Computer:

screen = True

def start(self):

print('电脑正在开机中……')

电脑类,都有屏幕,所以属性screen的值为True;开机时会显示“电脑正在开机中……”。

具体含义:

class Computer: #类的创建:class + 类 + 英文冒号。

screen = True #类的属性创建:通过赋值语句(即定义“是怎样的”)。

def start(self):#实例方法的创建:def + 方法名(self)。

print('电脑正在开机中……')#方法具体执行过程:即定义“能做什么”。

注:在类中赋值的变量叫做属性,类中定义的函数叫做方法(以此区别普通函数)

实例方法是指类中带self的函数,是类方法的一种形式,最是最常用的用法。

实例方法的创建语句,和函数的定义语句很类似,唯一不同的是:实例方法中有个必须放在首位的参数self。

类名的首字母要大写,以便让我们轻松地辨认出“哦!这个是类!”

来个例子:创建一个“中国人”的类,并为其创建一个属性和一个方法。

# 类名首字母大写

class Chinese:

# 用赋值语句,创建类的属性

eye = 'black'

# 创建实例方法时,不要漏了 self

def eat(self):

print('吃饭,主食是大米。')

不过运行代码,终端会一片空白,这是因为我们只完成了创建,还没有调用。

2.类的调用

来个例子:

class Computer:

screen = True

def start(self):

print('电脑正在开机中……')

my_computer = Computer()

print(my_computer.screen)

my_computer.start()

终端显示

True

电脑正在开机中……

倒数第二行:my_computer.screen先是获取到类属性screen对应的值True,再用print()打印出来。最后一行:my_computer.start()调用方法start(),这个方法的功能是直接打印出'电脑正在开机中……'。

有人可能会想:为什么实例调用方法时不用传参,定义时不是有个参数self吗?这就是参数self的特殊之处:在定义时不能丢,在调用时要忽略。

来个例子:

class Chinese: # 创建一个类

eye = 'black'

def eat(self):

print('吃饭,主食是大米。')

wufeng = Chinese() # 类的实例化

print(wufeng.eye) # 实例调用类属性

wufeng.eat() # 调用类中的方法(传参不用管self)

终端显示

black

吃饭,主食是大米。

类的创建于调用三部曲:创建一个类 —— 类的实例化 —— 用实例调用类的属性和方法。

三、创建类的两个关键点

1.特殊参数:self

正式揭秘特殊参数self的作用:self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行(self.属性=属性,就是把属性弄到实例对象上)。

换言之,self 是所有实例的替身。

来个例子:

class Name:

def greeting(self):

print('很高兴在知乎遇见你')

def say(self):

self.greeting()

print('我是真小凡')

person = Name()# 创建实例person

person.say()# 调用say()方法

终端显示

很高兴在知乎遇见你

我是真小凡

当最后一行实例person调用say()方法时,便会执行say()内部的语句(第七行开始)。

此时self.greeting()就变成person.greeting(),也就是调用实例方法greeting(),打印出'很高兴在知乎遇见你',再打印出'我是真小凡'。所以self代表的是类的实例本身,方便数据的流转。

需要记住两点:只要在类中用def创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)。

当在类的方法内部想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式。

2.特殊方法:初始化函数定义

初始化方法的格式是def __init__(self),是由init加左右两边的【双】下划线组成( initialize “初始化”的缩写)。

初始化方法的作用在于:当每个实例对象创建时,该方法内的代码无须调用就会自动运行。

来个例子:

class People:

# 初始化方法的创建,init两边双下划线。

def __init__(self,name,text,you):

self.name = name # self.name = '真小凡'

self.text = text # self.text = '文字'

self.you = you # self.you = '你们'

def write(self):

print(self.name + '写出了' + self.text)

def meet(self):

print(self.name + '遇见了' + self.you)

person = People('真小凡','文字','你们') # 传入初始化方法的参数

person.write()

person.meet()

终端显示

真小凡写出了文字

真小凡遇见了你们

很好理解的一个方法:

记住初始化构造函数会自动执行,它可以帮我们快速的把一些属性绑定到实例对象上。

辅助理解:类可以看成模板,模板的特性:拥有通用的基本属性+基本方法。

实例化就是根据从通用基础模板生成的单独个体,因为模板需要多次利用所以每次实际应用的是实例出来的实例对象,当然实例对象可以利用类里面的属性跟方法,但是实例对象之间都是互相独立的。

加了self的都是涉及到实例对象,初始化构造函数,可以简单理解为快速复制粘贴并且进行小修改的操作。

本人后续会持续在知乎更新,小伙伴们点个赞,按个关注呗,笔芯 @真小凡 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值