python中定义类时__init__()方法的作用

本文探讨了Python中__init__方法的用途及其与C语言构造函数的区别。通过实例讲解了如何利用__init__方法使类属性变为变量,并在创建对象时传值。
部署运行你感兴趣的模型镜像

最开始学习python,认为定义类时__init__方法的作用等同于C中的构造函数,但是使用之后发现也有区别

例如:

执行时的步骤可以理解为;

b = object.__new__(a)

a.__init__(a,"wang")

即__init__的作用是初始化实例后的对象b

在子类不重写__init__方法时,子类会默认调用父类中的__init__方法

子类也可以重写__init__方法,来给子类定义专属属性

当然,上面写的是比较官方的解释

用简单的话来讲,可以理解为,类的属性如果直接写在类里面一般是要有值的

例如: class fun()

                a = 3

这样的情况下,类中的属性无法变成变量,当将类的属性以self.a的方式定义到初始化方法中,那属性也可以当成变量

例如:class fun()

               def __init__(self,a)

                      self.a = a

         f = fun(3)

          print(f.a)

在这种情况下,类中的属性,变成了变量,并且需要在创建对象时传值

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python中不写`__init__`方法会有以下影响和使用情况: ### 影响 - **属性定义方面**:通常`__init__`方法用于定义的属性,在实例化对象将相关属性赋予对象,不写`__init__`方法就没有专门用于初始化属性的方法。不过,属性仍可以在其他方法定义,但需要在调用该方法后对象才会拥有相应属性。例如: ```python class MyClass: def set_attributes(self, value): self.value = value obj = MyClass() # 此obj没有value属性 obj.set_attributes(10) # 调用方法后obj有了value属性 print(obj.value) ``` - **实例化过程**:实例化对象,不会执行初始化操作。正常情况下,实例化会先调用`__new__`方法创建对象,再调用`__init__`方法初始化属性,不写`__init__`方法就跳过了属性初始化这一步 [^2]。 ### 使用情况 - **简单工具**:当只是提供一些工具方法,不需要管理特定状态或属性,可不写`__init__`方法。例如,一个用于数学计算的: ```python class MathUtils: @staticmethod def add(a, b): return a + b @staticmethod def subtract(a, b): return a - b result = MathUtils.add(3, 5) print(result) ``` - **子继承与扩展**:在子继承父,如果父已经有合适的`__init__`方法,子不需要额外的初始化操作,就可以不写`__init__`方法。例如: ```python class ParentClass: def __init__(self, value): self.value = value class ChildClass(ParentClass): pass child = ChildClass(20) print(child.value) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值