侧边栏壁纸
博主头像
顾小诺 博主等级

行动起来,活在当下

  • 累计撰写 30 篇文章
  • 累计创建 14 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

四、魔法函数

顾小诺
2024-06-11 / 0 评论 / 0 点赞 / 5 阅读 / 0 字

四、魔法函数

一、什么是魔法函数

在Python中,魔法函数是以双下划线(__)开头和结尾的特殊方法,用于实现特定的功能或行为。这些魔法函数通常用于重载运算符、实现迭代器和生成器、处理属性访问等。例如,__init__方法用于初始化对象,__add__方法用于重载加法运算符,__iter__方法用于实现迭代器等。通过实现这些魔法函数,可以让对象在特定的情况下表现出特定的行为,从而增强了Python的灵活性和表达能力。

二、python 的数据模型以及数据模型对python的影响

Python的数据模型是指Python语言中用来描述数据对象如何存储、操作和表示的一组规则和约定。这些规则和约定定义了Python中的各种数据类型、操作符、内置函数等的行为,使得Python能够灵活地处理不同类型的数据对象。
数据模型对Python的影响主要体现在以下几个方面:

  1. 统一的数据模型:Python的数据模型提供了一种统一的方式来处理不同类型的数据对象,使得不同的数据类型可以在相同的操作下表现出一致的行为。这种统一性使得Python的代码更加简洁、易读和易维护。

  2. 面向对象编程:Python的数据模型是基于面向对象编程的思想设计的,因此在Python中一切皆为对象。通过数据模型,Python提供了一种灵活的方式来定义和操作对象,使得面向对象编程更加简单和强大。

  3. 魔术方法:Python的数据模型中定义了一系列特殊方法(也称为魔术方法),用于实现对象的特定行为,如比较、迭代、属性访问等。通过实现这些特殊方法,可以自定义对象的行为,使得Python的数据模型更加灵活和强大。
    总之,Python的数据模型是Python语言的核心之一,它定义了Python中数据对象的行为和操作方式,为Python提供了一种灵活、简洁和强大的编程模型。通过深入理解和应用数据模型,可以更好地利用Python的强大功能和特性,编写出高效、优雅的代码。

class Company(object):
    def __init__(self,employee_list):
        self.employee_list = employee_list

    #实现__getitem__ 变成可迭代
    def __getitem__(self, item):
        return self.employee_list[item]

    def __len__(self):
        return len(self.employee_list)

company = Company(['zhansan','lisi','wangwu'])

for item in company:
    print(item)

print(len(company))

# 结果
C:\Users\Admin\miniconda3\python.exe F:/code/study/python_test/chapter2.3/company.py 
zhansan
lisi
wangwu
3

三、魔法函数一览

字符串__str__ 和 __repr__魔法函数

__str__和__repr__都是Python中的魔法函数,用于定制对象的字符串表示形式。
__str__用于返回对象的“非正式”或“友好”字符串表示形式,通常用于打印对象或在字符串格式化时使用。它应该返回一个易于阅读的字符串,适合用户查看。
repr__用于返回对象的“正式”字符串表示形式,通常用于调试和日志记录。它应该返回一个能够准确表示对象的字符串,通常包括对象的类型和关键属性。
当对象没有定义__str__时,Python会尝试调用__repr__来获取对象的字符串表示形式。如果两者都没有定义,Python会返回默认的字符串表示形式,类似于<main.ClassName object at 0x7f2c8c7f7eb8>。
通常情况下,建议至少定义__repr
,以便在调试时能够更好地了解对象的状态。

class Company(object):
    def __init__(self,employee_list):
        self.employee_list = employee_list

    def __str__(self):
        return ",".join(self.employee_list)

    def __repr__(self):
        return ",".join(self.employee_list)

company = Company(['zhansan','lisi','wangwu'])

#相当于隐式调用 str(company)
print(company)

#在调试时输出对象, 相当于 repr(company), 间接的去调用Company的__repr__方法
company

四、随便举例说明魔法函数的重要性(len)

0

评论区