Python中类的初始化形式def __init__(self)和def __init__(self,args)

本文详细解释了Python中类的两种__init__方法形式:形式一无参数仅初始化自身,形式二带有参数用于设置属性。介绍了如何实例化并使用这些方法打印属性值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录
一、形式一:def __init__(self)
二、形式二:def __init__(self,args)
一、形式一:def init(self)
这种形式在__init__方法中,只有一个self,指的是实例的本身。它允许定义一个空的类对象,当新数据来时,可以直接添加。实例化时,需要实例化之后,再进行赋值。

# -*- coding:utf-8 -*-
class Student(object):
    def __init__(self):
        self.name = None
        self.grade = None

    def print_grade(self):
        print(f"{self.name}'s grade is {self.grade}")

s1 = Student()  # 创建对象s1
s1.name = "Tom"
s1.grade = 8

s2 = Student()  # 创建对象s2
s2.name = "Jerry"
s2.grade = 7

s1.print_grade()
s2.print_grade()
在对类Student进行实例化时,因为__init__方法只有一个参数self,因此不需要传入其他参数。当需要打印print_grade方法的结果时,只需要对name和grade进行赋值即可。

二、形式二:def init(self,args)
这种形式在__init__方法中,除了有参数self,还有其他的参数args。
这种形式在定义方法时,属性值不允许为空。实例化时,直接传入参数。

# -*- coding:utf-8 -*-
class Student(object):
    def __init__(self, name, grade):
        self.name = name
        self.grade = grade

    def print_grade(self):
        print(f"{self.name}'s grade is {self.grade}")


s1 = Student("Tom", 8)   # 创建对象s1
s2 = Student("Jerry", 7)  # 创建对象s2

s1.print_grade()
s2.print_grade()
在对类Student进行实例化时,因为__init__方法有参数self,name和grade,因此在实例化对象时一定要传入name和grade参数。当需要打印print_grade方法的结果时,直接调用即可。

### Python 初始化方法 `__init__` 的用法 在 Python 中,的实例化过程中会自动调用特殊的方法 `__init__` 来完成对象的初始化工作。此方法可以接受参数来设置新创建的对象属性。 当定义带有参数(包括位置参数关键字参数)的构造函数时,可以通过 `args` `kwargs` 实现灵活传参: #### 使用 `*args` `*args` 允许多个无名参数传递给函数,在内部这些参数被当作元组对待。 ```python class ExampleClass: def __init__(self, *args): self.args = args example_instance = ExampleClass(10, 'string', True) print(example_instance.args) # 输出: (10, 'string', True) ``` #### 使用 `**kwargs` `**kwargs` 收集命名的关键字参数,并将其作为字典存储起来。 ```python class Person: def __init__(self, **kwargs): self.name = kwargs.get('name') self.age = kwargs.get('age') person_instance = Person(name='Alice', age=30) print(f"{person_instance.name} is {person_instance.age} years old.") # 输出:Alice is 30 years old. ``` #### 同时使用 `*args` `**kwargs` 为了使更加通用,可以在同一个构造器里同时利用两者。 ```python class FlexibleInitExample: def __init__(self, first_arg, second_arg=None, *args, **kwargs): print(f"First argument: {first_arg}") print(f"Second optional arg: {second_arg}") print("Additional positional arguments:", args) print("Keyword arguments:", kwargs) FlexibleInitExample( "required", "optional", 789, extra="value", another_extra=True ) # 输出如下: # First argument: required # Second optional arg: optional # Additional positional arguments: (789,) # Keyword arguments: {'extra': 'value', 'another_extra': True} ``` 通过上述例子可以看出如何有效地运用 `*args` `**kwargs` 参数让更具有灵活性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值