Python 面向对象编程:类、对象、初始化和方法详解

Python 是一种面向对象的编程语言。在 Python 中,几乎所有东西都是对象,都具有其属性和方法。

类似于对象构造函数或用于创建对象的“蓝图”的类。

创建一个类

要创建一个类,请使用关键字 class:

示例,创建一个名为 MyClass 的类,其中包含一个名为 x 的属性:

python">class MyClass:
  x = 5

创建对象

现在,我们可以使用名为 MyClass 的类来创建对象:

示例,创建一个名为 p1 的对象,并打印 x 的值:

python">p1 = MyClass()
print(p1.x)

init() 函数

上面的示例是最简单形式的类和对象,不太适用于实际应用程序。要理解类的含义,我们必须了解内置的 init() 函数。所有类都有一个名为 init() 的函数,该函数在初始化类时始终执行。使用 init() 函数来为对象属性分配值,或者在创建对象时需要执行的其他操作:

示例,创建一个名为 Person 的类,使用 init() 函数为 name 和 age 分配值:

python">class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1.name)
print(p1.age)

注意: 每次使用类创建新对象时,init() 函数都会自动调用。

str() 函数

str() 函数控制当类对象表示为字符串时应返回什么。如果未设置 str() 函数,则返回对象的字符串表示:

示例,没有 str() 函数的对象的字符串表示:

python">class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

p1 = Person("John", 36)

print(p1)

示例,带有 str() 函数的对象的字符串表示:

python">class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def __str__(self):
    return f"{self.name}({self.age})"

p1 = Person("John", 36)

print(p1)

对象方法

对象也可以包含方法。对象中的方法是属于对象的函数。让我们在 Person 类中创建一个方法:

示例,插入一个打印问候的函数,并在 p1 对象上执行它:

python">class Person:
  def __init__(self, name, age):
    self.name = name
    self.age = age

  def myfunc(self):
    print("Hello my name is " + self.name)

p1 = Person("John", 36)
p1.myfunc()

注意: self 参数是对类的当前实例的引用,并用于访问属于类的变量。

self 参数

self 参数是对类的当前实例的引用,并用于访问属于类的变量。它不一定要命名为 self,您可以根据需要命名它,但它必须是类中任何函数的第一个参数:

示例,使用 mysillyobject 和 abc 代替 self:

python">class Person:
  def __init__(mysillyobject, name, age):
    mysillyobject.name = name
    mysillyobject.age = age

  def myfunc(abc):
    print("Hello my name is " + abc.name)

p1 = Person("John", 36)
p1.myfunc()

修改对象属性

您可以像这样修改对象的属性:

示例,将 p1 的年龄设置为 40:

python">p1.age = 40

删除对象属性

您可以使用 del 关键字来删除对象的属性:

示例,从 p1 对象中删除 age 属性:

python">del p1.age

删除对象

您可以使用 del 关键字来删除对象:

示例,删除 p1 对象:

python">del p1

pass 语句

类定义不能空,但如果由于某种原因类定义没有内容,请插入 pass 语句以避免出错。

示例

python">class Person:
  pass

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

看完如果觉得有帮助,欢迎点赞、收藏关注

在这里插入图片描述


http://www.niftyadmin.cn/n/5121390.html

相关文章

【Linux】top 命令使用

top 是一个在 Linux 和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。 top命令 -Linux手册页 作者 这个全新的、增强的替代品由Jim/James C.Warner撰写。 在Albert D.Ca…

Kubernetes 的有状态和无状态服务

Author:rab 目录 前言一、无状态服务案例1.1 yml 案例1.2 扩容与缩容1.2.1 扩容1.2.2 缩容 1.3 暂停与恢复1.3.1 暂停1.3.2 恢复 1.4 回滚 二、有状态服务案例2.1 yml 案例2.2 扩容与缩容2.2.1 扩容2.2.2 缩容 总结 前言 在 Kubernetes(k8s)…

高等数学啃书汇总重难点(七)微分方程

同济高数上册的最后一章,总的来说,这篇章内容依旧是偏记忆为主,说难不难说简单不简单: 简单的是题型比较死,基本上就是记公式,不会出现不定积分一般花样繁多的情况;然而也就是背公式并不是想的…

【Overload游戏引擎细节分析】standard材质Shader

提示:Shader属于GPU编程,难写难调试,阅读本文需有一定的OpenGL基础,可以写简单的Shader,不适合不会OpenGL的朋友 一、Blinn-Phong光照模型 Blinn-Phong光照模型,又称为Blinn-phong反射模型(Bli…

程序员心得体会

作为一个程序员,我在学习和工作的过程中积累了许多经验和心得。在这里,我想总结一下我作为程序员的一些心得体会。 首先,作为一个程序员,学习是永无止境的。编程语言和技术在不断发展和更新,我们需要不断学习新的知识…

嵌入式算法——傅里叶变换算法

文章引注 https://mp.weixin.qq.com/s/5VIpNWci9YLY3m4gcYd6-w 摘要 傅里叶变换的核心在于,“任何连续周期信号可以由一组适当的正弦曲线组合而成”,在这个基础上对信号的中特定频率的正弦波进行分解或者重组,基于频率方面分析波形。 1、傅…

进程(2)——进程状态(僵尸,睡眠……)【linux】

进程(2)——进程状态(僵尸,睡眠……)【linux】 一.操作系统的进程状态:1.1 运行态1.2 阻塞态1.3 挂起态 二.linux进程状态2.1 R——运行状态2.2 S——浅度睡眠状态2.3 D——(disk sleep&#xf…

iOS调试技巧——使用Python 自定义LLDB

一、类介绍 在使用Python 自定义LLDB之前,先了解一下LLDB的一些类型 SBTarget 正在被调试的程序SBProcess 和程序关联的具体的进程SBThread 执行的线程SBFrame 和线程关联的一个栈帧SBVariable 变量,寄存器或是一个表达式一般情况下,我们取到SBFrame就可以进行方法调用来打…