鱼C论坛

 找回密码
 立即注册
查看: 84|回复: 8

[已解决]python类和对象问题

[复制链接]
发表于 3 天前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题:
最佳答案
3 天前
__slots__`用于限制类的实例只能拥有特定的属性。如果你为类定义了`__slots__`,Python就不会为每个实例创建`__dict__`属性,从而节省内存。因此,当你尝试访问`c.__dict__`时会报错。

这样做能节省内存,但大多数时候不需要。一般也不会有甲鱼课上那么夸张
屏幕截图 2025-01-21 192300.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
请具体描述您关于Python类和对象的问题,以便我为您提供具体的解答!例如,您可以提问:“如何定义类?”或者“如何创建对象?”等。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-1-21 01:24
请具体描述您关于Python类和对象的问题,以便我为您提供具体的解答!例如,您可以提问:“如何定义类?”或 ...

图片里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
zyx2012 发表于 2025-01-21 01:24
FishC 发表于 2025-1-21 01:24
请具体描述您关于Pyth ...


很抱歉,我暂时无法查看图片的内容。您可以直接描述图片中的问题或将文字内容手动输入,我会根据您提供的内容用BBCode形式为您解答!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
FishC 发表于 2025-1-21 01:24
很抱歉,我暂时无法查看图片的内容。您可以直接描述图片中的问题或将文字内容手动输入,我会根据您提供 ...

class C:
    __slots__ = ['x']

   
c = C()
c.x = 520
c.__dict__
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    c.__dict__
AttributeError: 'C' object has no attribute '__dict__'. Did you mean: '__dir__'?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
zyx2012 发表于 2025-01-21 01:25
FishC 发表于 2025-1-21 01:24
很抱歉,我暂时无法查 ...


这是一个关于`__slots__`在Python类中用法的典型问题,以下是解析和解答:

问题解析
`__slots__`用于限制类的实例只能拥有特定的属性。如果你为类定义了`__slots__`,Python就不会为每个实例创建`__dict__`属性,从而节省内存。因此,当你尝试访问`c.__dict__`时会报错。

代码示例及解释
以下是一个完整的代码示例和注释:
class C:
    __slots__ = ('x',)  # 限制实例只能有属性 'x'

c = C()
c.x = 520  # 允许赋值,因为 'x' 在 __slots__ 中定义

# c.__dict__  # 会报错,因为使用了 __slots__,实例中不存在 __dict__

print(c.x)  # 输出:520

运行时注意
  • 未在`__slots__`中定义的属性不能被赋值。例如,`c.y = 1024`会报错。
  • 使用`__slots__`后,实例将没有`__dict__`属性,即不能动态添加新的属性。
  • `__slots__`常用于优化内存使用,但会限制灵活性。如果不需要限制属性,建议不要使用`__slots__`。


希望这个答案对您有帮助!如果还有其他问题,请继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 3 天前 | 显示全部楼层
先不设最佳答案,给互助团队点机会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层
zyx2012 发表于 2025-01-21 01:29
先不设最佳答案,给互助团队点机会


好的!交流学习更能碰撞出灵感的火花,期待其他小伙伴的参与!如果有进一步的问题也可以随时问我哦~{:5_115:}

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 3 天前 | 显示全部楼层    本楼为最佳答案   
__slots__`用于限制类的实例只能拥有特定的属性。如果你为类定义了`__slots__`,Python就不会为每个实例创建`__dict__`属性,从而节省内存。因此,当你尝试访问`c.__dict__`时会报错。

这样做能节省内存,但大多数时候不需要。一般也不会有甲鱼课上那么夸张
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-24 02:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表