前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python基础——类【类的定义和使用、魔术方法】

python基础——类【类的定义和使用、魔术方法】

作者头像
用户11029137
发布2024-04-15 09:07:23
1260
发布2024-04-15 09:07:23
举报
文章被收录于专栏:编程学习编程学习

📝前言: python中的类,自我感觉在某种程度上和C语言的结构体是有共同之处的,如果有兴趣,可以先看看这篇文章:C语言——结构体类型(一),先了解一下C语言中的结构体,对学习python中的类也有一定帮助。 这篇文章主要讲解一下python语法中关于类的基础知识: 1,类的定义和使用 2,魔术方法

一,类的定义和使用

在 Python 中,类是对象的蓝图,它定义了对象的属性和方法。类提供了创建对象的方法,对象是类的实例。使用类可以将代码组织为逻辑单元,并使代码更加模块化。 定义语法:

代码语言:javascript
复制
class 类名:
	属性1
	属性2
	
	def 方法(slef,参数1,参数2……):
	……

下面是一个简单的 Python 类示例:

代码语言:javascript
复制
class Dog:
    legs = 4  # 类属性
    name = None
# 类方法
    def bark(self):
        print("汪汪!")

    def sit(self):
        print(f"{self.name}坐下了。")

dog1 = Dog()  # 创建对象实例
dog1.name = "小黄"  # 初始化属性
dog1.sit()  # 调用方法

注意:我们在类内部定义方法的时候参数部分要多加一个self,如:def sit(self): 在使用类属性的时候,也需要用self,如:self.name (但是我们在外部调用方法的时候,则不需要传入这个self参数) 运行结果:

二,魔术方法

在Python中,魔术方法是一类特殊的方法,它们被预先定义,用于实现某些特定的功能。魔术方法的名字以双下划线(__)开头和结尾。以下是Python中一些常见的魔术方法:

(此图片来源于B站黑马程序员) 下面我将展示使用上述魔术方法的示例:

1,init

__init__ 方法是一个特殊的方法,称为类的构造函数或初始化方法。当您创建一个类的实例时,__init__ 方法会自动被调用。 下面是一个简单的示例,其中我们使用 init 方法初始化一个名为 Person 的类的属性:

代码语言:javascript
复制
class Person:
    def __init__(self, name, age):
        self.name = name  # 意思是用传入的参数name给属性name赋值
        self.age = age

# 创建一个 Person 类的实例
p1 = Person("Alice", 30)

# 打印创建的实例的属性
print(p1.name)  # 输出: Alice
print(p1.age)   # 输出: 30

2,str

__str__ 方法是一个特殊的方法,用于定义当尝试将对象转换为字符串时应该执行的操作。通常,__str__ 方法返回对象的字符串表示。 下面是一个简单的示例,其中我们使用 str 方法为 Person 类提供一个自定义的字符串表示:

代码语言:javascript
复制
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

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

# 创建一个 Person 类的实例
p1 = Person("Alice", 30)

# 将对象转换为字符串
print(str(p1))  # 输出: Alice is 30 years old.

3,lt

__lt__ 方法是一个特殊的方法,用于定义当两个对象进行比较时应该执行的操作。在比较运算符 < 的左侧和右侧对象时,将调用 __lt__ 方法。 下面是一个简单的示例,其中我们使用 lt 方法定义 Person 类实例之间的比较:

代码语言:javascript
复制
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __lt__(self, other):
        return self.age < other.age

# 创建两个 Person 类的实例
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)

# 使用比较运算符 < 进行比较
print(p1 < p2)  # 输出: True

在本例中,我们根据年龄进行比较,因此当 p1.age 小于 p2.age 时,结果为 True

4,le

__le__ 方法是一个特殊的方法,用于定义当两个对象进行比较时应该执行的操作。在比较运算符 <= 的左侧和右侧对象时,将调用 __le__ 方法。(和__lt__类似) 面是一个简单的示例,其中我们使用 __le__ 方法定义 Person 类实例之间的比较:

代码语言:javascript
复制
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __le__(self, other):
        return self.age <= other.age

# 创建两个 Person 类的实例
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)

# 使用比较运算符 <= 进行比较
print(p1 <= p2)  # 输出: True

5,eq

__eq__ 方法是一个特殊的方法,用于定义当两个对象进行比较时应该执行的操作。在比较运算符 == 的左侧和右侧对象时,将调用 __eq__ 方法。 下面是一个简单的示例,其中我们使用 __eq__ 方法定义 Person 类实例之间的比较:

代码语言:javascript
复制
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __eq__(self, other):
        return self.age == other.age

# 创建两个 Person 类的实例
p1 = Person("Alice", 30)
p2 = Person("Bob", 30)

# 使用比较运算符 == 进行比较
print(p1 == p2)  # 输出: False

当然,python中的类还有很多魔术方法,在这里就不一一介绍了,我们只需在需要使用的时候进行查阅即可。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,类的定义和使用
  • 二,魔术方法
    • 1,init
      • 2,str
        • 3,lt
          • 4,le
            • 5,eq
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档