dir (obj) 与dir()
用大白话 代码例子给你讲透先给核心结论这两句话是在说dir(obj)是 Python 内置的「固定规则工具」__dir__()是类里「开发者自定义的钩子」两者的返回结果永远做不到 100% 完全一样而__dir__()返回什么完全由你写的类代码决定没有固定规则。一、先讲第一句「dir (obj) 永远不会和dir() 100% 完全相同」这里的「永远不会 100% 相同」不是指元素内容不一样而是指返回结果的顺序、类型、细节处理永远存在差异核心原因是dir(obj)是 Python 内置的上层封装函数它有自己固定的处理逻辑不管__dir__()返回什么dir()都会做额外的标准化处理导致两者结果不可能完全一致。具体差异体现在 3 个方面1. 顺序永远不同哪怕两者的元素内容完全一样dir()也会做统一排序而__dir__()按类内部的实现顺序返回顺序永远不一样。pythonclass MyClass: def __init__(self): self.name test self.age 18 def __dir__(self): return [name, age] # 自定义顺序 obj MyClass() print(dir(obj)) # 输出[age, name] dir做了排序 print(obj.__dir__()) # 输出[name, age] 按你写的顺序返回2. 类型可能完全不同__dir__()可以返回任何可迭代类型生成器、元组等而dir()永远会把结果转换成标准化的列表类型载体类型完全不同。pythonclass MyClass: def __dir__(self): yield name # 返回生成器 yield age obj MyClass() print(type(obj.__dir__())) # 输出class generator print(type(dir(obj))) # 输出class list3. 细节处理不同dir()会做额外的标准化处理比如去重、过滤极端内部属性而__dir__()返回的是原始内容不会做任何处理。 比如你让__dir__()返回重复元素dir()会自动去重结果就完全不一样了pythonclass MyClass: def __dir__(self): return [name, age, name] # 重复元素 obj MyClass() print(dir(obj)) # 输出[age, name] 自动去重 print(obj.__dir__()) # 输出[name, age, name] 保留原始重复二、再讲第二句「dir() 的返回结果完全由类的实现决定」这句话的意思是__dir__()是类里的魔法方法你在类里怎么写这个方法它就返回什么内容没有任何固定的返回规则完全由开发者自己决定。举几个极端例子你就懂了你可以让__dir__()只返回你指定的 2 个属性不管类里有多少属性pythonclass MyClass: def __init__(self): self.name test self.age 18 self.gender 男 # 这个属性故意不返回 def __dir__(self): return [name, age] # 只返回这两个 obj MyClass() print(obj.__dir__()) # 输出[name, age]你甚至可以让__dir__()返回和类属性完全无关的内容pythonclass MyClass: def __dir__(self): return [我是自定义的, 完全不管类里有什么] obj MyClass() print(obj.__dir__()) # 输出[我是自定义的, 完全不管类里有什么]你可以让__dir__()返回任何类型的可迭代对象pythonclass MyClass: def __dir__(self): return (name, age) # 返回元组 obj MyClass() print(obj.__dir__()) # 输出(name, age)三、最终总结dir(obj)是「固定规则的工具」不管你__dir__()返回什么它都会按自己的逻辑做排序、类型转换、去重等处理所以永远不会和__dir__()的原始结果 100% 完全相同__dir__()是「开发者自定义的钩子」返回什么内容、什么类型、什么顺序完全由你在类里的代码实现决定没有固定规则。

相关新闻

AI写作结尾总被忽略?揭秘让转化率飙升47%的5步号召设计法:从心理学到NLP实战

AI写作结尾总被忽略?揭秘让转化率飙升47%的5步号召设计法:从心理学到NLP实战

更多请点击: https://intelliparadigm.com 第一章:AI写作结尾总被忽略?揭秘让转化率飙升47%的5步号召设计法:从心理学到NLP实战 AI生成内容常以信息密度高见长,却普遍在结尾处陷入“戛然而止”的陷阱——缺乏行为引导…

2026/7/23 0:34:35 阅读更多 →
鸿蒙报错速查:Cannot find name ‘AppStorageV2‘,忘 import 编译就炸,根因 + 眜解法

鸿蒙报错速查:Cannot find name ‘AppStorageV2‘,忘 import 编译就炸,根因 + 眜解法

报错原文 ERROR: 10505001 ArkTS Compiler Error Error Message: Cannot find name AppStorageV2. Did you mean to use import AppStorageV2 from "ohos.arkui.StateManagement" instead? At File: xxx.ets:N:N报错触发场景 你写鸿蒙 ArkUI V2 应用级状态时&#x…

2026/7/23 0:34:35 阅读更多 →
AI服务上线即崩?:从Trace到Metric再到Flame Graph——一套闭环性能分析工作流(仅限内部团队验证版)

AI服务上线即崩?:从Trace到Metric再到Flame Graph——一套闭环性能分析工作流(仅限内部团队验证版)

更多请点击: https://kaifayun.com 第一章:AI服务上线即崩?——性能危机的典型表征与归因范式 当大模型推理API在发布后5分钟内出现98%的超时率、GPU显存瞬间打满、请求队列堆积至数万条,这并非偶然故障,而是系统性性…

2026/7/23 0:34:35 阅读更多 →

最新新闻

逆向学习:AI通过错误样本提升模型性能的新方法

逆向学习:AI通过错误样本提升模型性能的新方法

1. 研究背景与核心发现滑铁卢大学计算机科学团队近期在机器学习领域取得突破性发现:在特定条件下,让AI模型学习错误答案反而能提升其最终表现。这项发表在《Nature Machine Intelligence》的研究颠覆了传统监督学习的训练范式。研究团队设计了一组对照实…

2026/7/23 1:11:46 阅读更多 →
一本Java神书啃了十年还在啃?这本PDF让你从入门到精通

一本Java神书啃了十年还在啃?这本PDF让你从入门到精通

有一本书, 它属于Java语言经典教材范畴, 历经多年畅销持续, 始终未衰。这本书对Java 6特性做了全面整合, 其采用“基础优先, 问题驱动”这样的教学方式, 按照循序渐进的模式来介绍程序设计基础, 还有解决问题的方法,以及面向对象程序设计、图形用户界面设计、异常处理、I/O和递…

2026/7/23 1:11:46 阅读更多 →
RLHF技术解析:从原理到实践应用

RLHF技术解析:从原理到实践应用

1. 为什么RLHF值得每个程序员关注?RLHF(Reinforcement Learning from Human Feedback)正在重塑我们与大模型交互的方式。作为ChatGPT、Claude等主流大模型的核心训练技术,它解决了传统强化学习在复杂场景中难以定义奖励函数的痛点…

2026/7/23 1:11:46 阅读更多 →
AIGC技术解析:从原理到应用实践

AIGC技术解析:从原理到应用实践

1. AIGC技术全景解析:从基础概念到核心原理AIGC(AI Generated Content)正在重塑内容生产的方式。作为从业者,我见证了这个领域从最初的文字生成发展到如今涵盖文本、图像、音频、视频的全方位内容创作。理解AIGC的核心原理&#x…

2026/7/23 1:11:46 阅读更多 →
AI视频数字人技术:企业内容生产新革命

AI视频数字人技术:企业内容生产新革命

1. 项目概述:视频数字人如何重塑企业内容生产在短视频和直播电商爆发的时代,企业内容创作面临三大核心痛点:人力成本高(专业主播月薪普遍超过2万元)、制作周期长(从脚本到成片平均需要5-7天)、内…

2026/7/23 1:11:46 阅读更多 →
2026年论文AI率检测与降重工具实测指南

2026年论文AI率检测与降重工具实测指南

1. 论文AI率检测现状与降重需求分析2026年学术圈最热门的话题之一,莫过于各大高校和期刊对论文AI生成内容的严格筛查。我最近帮实验室三位研究生处理毕业论文时,发现知网最新上线的"AI率检测"功能确实比传统查重系统更让人头疼——它不仅能识别…

2026/7/23 1:10:46 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻