【问题标题】:Is the usage of special attributes discouraged?是否不鼓励使用特殊属性?
【发布时间】:2020-04-05 22:33:53
【问题描述】:

Python 文档状态为https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy

下面的一些类型描述包含一个列出“特殊属性”的段落。这些属性提供对实现的访问,不适合一般用途。他们的定义将来可能会改变。

所以,对我来说,不鼓励使用特殊属性。

真的是这样吗?

如果是这样:是否有一种“非特殊”方式来访问每个特殊属性(例如内置函数 len 用于 __len__)?


澄清一下,我在说什么:

如果是用户定义的函数,特殊属性是:

  • __doc__
  • __name__
  • __qualname__
  • __模块__
  • __defaults__
  • __code__
  • __globals__
  • __dict__
  • __closure__
  • __注解__
  • __kwdefaults__

【问题讨论】:

    标签: python


    【解决方案1】:

    通常在使用类对象(魔术函数/dunder 函数等)时会使用此特殊属性,但是是的,这些属性可以按照您所说的以“非特殊”方式访问,并且不应该可以在任何地方使用。以下是其中一些替代方案的一些示例。对于 global 你有全局关键字(你尽量避免这种做法)

    x = 'hello'
    
    def egs():
       global x
       print(x)   #prints out hello
    

    __dict__ 只是一种将对象制作成字典的方法,此关键字用于非类对象,实例为dict__str__ 的工作原理与str 完全相同,原理与我之前强调过,名单还在继续。就像我在开始时所说的,这些特殊方法通常只在处理类和类实例时使用。 大多数 (据我所知并非全部)对于非类对象有替代品

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      相关资源
      最近更新 更多