首页 > 后端开发 > Python教程 > Python 中 `__init__()` 内部和外部定义的变量有什么区别?

Python 中 `__init__()` 内部和外部定义的变量有什么区别?

Linda Hamilton
发布: 2024-10-27 03:54:02
原创
343 人浏览过

  What's the Difference Between Variables Defined Inside and Outside `__init__()` in Python?

深入研究 __init__() 内部和外部变量的区别

考虑以下两个类:

<code class="python">class WithClass ():
    def __init__(self):
        self.value = "Bob"
    def my_func(self):
        print(self.value)

class WithoutClass ():
    value = "Bob"

    def my_func(self):
        print(self.value)</code>
登录后复制

乍一看,这些类看起来是相同的。然而,一个微妙的区别在于值变量的放置。在第一个类 (WithClass) 中,value 在 __init__() 方法内初始化,而在第二个类 (WithoutClass) 中,它在方法外部声明。

变量在 __init__() 之外 (Class属性)与 __init__() 内的变量(实例属性)

变量的位置决定了它是类属性还是实例属性。

  • 类属性: 在 __init__() 之外声明的变量由该类的所有实例共享。可以使用类名来访问它们,例如 WithoutClass.value。
  • 实例属性: 在 __init__() 内创建并以 self 开头的变量。特定于每个对象实例。它们只能通过对象本身访问,例如instance_of_WithClass.value。

放置的后果

这种区别会对代码行为和维护产生影响。

  • 方法内的使用:类属性可用于类中的所有方法,无论它们在何处声明。另一方面,实例属性必须先声明才能在方法中使用。
  • 从类外部访问:可以使用类从类外部访问类属性姓名。然而,实例属性只能通过类的实例来访问。
  • 操作属性:类属性影响类的所有实例。修改类属性将更改其所有实例的值。相反,实例属性仅影响它们所属的特定对象。

放置位置的选择

放置变量的位置的选择取决于您的方式希望它在类中表现良好。如果您希望共享值在实例之间保持不变,请使用类属性。如果您希望每个实例都有唯一的值,请在 __init__() 中创建它作为实例属性。

通过了解 __init__() 内部和外部变量之间的区别,您可以设计具有清晰且可预测行为的类,避免潜在的混乱和陷阱。

以上是Python 中 `__init__()` 内部和外部定义的变量有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板