前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python入门12 面向对象编程

Python入门12 面向对象编程

原创
作者头像
用户11104668
修改2024-05-10 21:55:41
460
修改2024-05-10 21:55:41
举报
文章被收录于专栏:python入门python入门

Python的面向对象编程是一种编程范式,它使用“对象”来设计应用程序和系统的结构。在面向对象编程中,程序被组织成对象的集合,这些对象通过发送消息来彼此通信。Python是一种完全支持面向对象编程的语言,我们来看两个面向对象编程的核心概念:

【类(Class)】

类是对象的蓝图或模板,它定义了对象具有的属性和方法。你可以将类视为一个对象的类型或种类。通过类,你可以创建(或称为“实例化”)多个具有相同属性和方法的对象。

【对象(Object)】

对象是类的实例,具有类定义的属性和方法。每个对象都是独一无二的,有自己的内存空间,并且可以独立地接收消息、处理数据和发送消息。

或者,我们简单理解,类就像是模具,对象是产品

我们在里面设计产品的形状和样式,设计好后,再放入材料,把对象加工出来

【定义类】

在Python中,类的定义使用class + 类名 来实现,语法如下:

class ClassName:

【类的实例化】

定义类以后,要实例化才会创建一个对象(有点类似于函数的定义和使用)

类的实例化语法如下:

ClassName(参数)

例如:

class animal:

pass

cat=animal()

上例中定义了一个animal的类,并用animal类实例化了一个cat对象

【魔法函数__init__()】

python中有一类魔法函数(也称为特殊函数)

它们是Python中预定义的方法,以两个下划线(__)开头和结尾

这些函数为Python的类提供了丰富的功能和灵活性,允许它们以特定的方式响应内置的操作和函数

魔法函数是一个特殊的函数,被用作类的初始化函数

例如:

class student:

def __init__(self, name,major):

self.name = name

self.major = major

在上面的例子中我们定义了一个叫student的类

并使用__init__()函数为两个对象self.name、self.major设定了初始值为参数name和major

需要注意的是,__init__()函数的第一个参数必须为self,这是固定写法

在Python中,类成员包括属性和函数,这些成员定义了类的状态和行为

这里的self.name和self.major被称为类的属性

【实例属性】

类的属性是与类相关联的变量,用于存储类的状态信息

分为实例属性类属性

实例属性是定义在类的实例上的属性。它们通常是在类的__init__方法被创建和初始化的

在__init__函数定义中,类属性用 self.属性名 作为前缀,表明是类自身的属性

在类定义的外部,使用 类名.属性名 来访问实例属性

下面来看一个完整的使用__init__()函数的例子

# coding: utf-8

class student:

def __init__(self, name,major):

self.name = name

self.major = major

stuA=student('Jim Green','Math')

print(stuA.name)

print(stuA.major)

这里,我们首先定义了student类

然后使用__init__函数定义了student类的初始化方式

分别用name、major参数的值初始化self.name、self.major两个实例属性

随后,使用student类创建了一个stuA实例,两个参数分别为字符串'Jim Green'、'Math'

最后使用stuA.name、stuA.major分别访问了该实例的两个实例属性

【类属性】

类属性是定义在类本身上的属性,而不是在类的实例上。它们通常是在类定义时直接创建的

当类属性被修改时,所有的实例都会看到这个变化,因为它们共享同一个类属性

# coding: utf-8

class student:

var1 = 'student'

def __init__(self, name,major):

self.name=name

self.major=major

# 创建实例

stuA= student('Ann','Math')

stuB =student('Bob','Art')

# 访问类属性

print(stuA.var1)

print(stuB.var1)

# 修改类属性

student.var1 = 'teacher'

print(stuA.var1)

print(stuB.var1)

可以看到第一次打印stuA.var1和stuB.var1时,两个实例的var1类属性都为student

当我们对student类的var1赋值为teacher时

再次打印两个实例的var1类属性时,结果都变为了teacher

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档