博客
关于我
Python中:self和__init__的含义 + 为何要有self和__init__
阅读量:170 次
发布时间:2019-02-28

本文共 1193 字,大约阅读时间需要 3 分钟。

Python中的self和__init__的含义 + 为何要有self和__init__

1. self的含义

在Python的类(Class)中,方法的第一个参数通常是self(“自身”)。这个参数表示当前实例(Instance),即类的对象(Object)。以下是self的具体含义:

  • self表示实例本身:在类的方法中,self指向当前类实例。例如,当你创建一个Person类的实例p = Person("crifan")时,p就是self。

  • 操作实例属性:通过self可以访问实例的属性。例如,self.name可以读取或设置实例的name属性。

  • 调用实例方法:通过self可以调用实例的方法。例如,self.sayYourName()会调用实例的sayYourName方法。

2. 为何要有self

  • 操作实例特定属性和方法:在类的方法中,通常需要访问实例的属性或调用实例的方法。使用self可以明确地指向当前实例,避免与其他变量混淆。

  • 避免全局变量和局部变量的冲突:如果不使用self,可能会引入全局变量或局部变量,导致无法正确访问实例属性和方法。

3. __init__的含义

init(双下划线开头和闭尾)是Python中用于初始化类实例的特殊方法。它在实例被创建时自动调用,用于执行初始化操作。

4. 为何要有__init__

  • 初始化实例属性:在__init__方法中,可以初始化实例的属性。例如,self.name = newPersionName会为实例设置name属性。

  • 执行初始化逻辑:可以在__init__中执行与实例创建相关的初始化逻辑,如连接数据库、加载配置文件等。

  • 接收参数:可以通过__init__接受参数,并根据参数初始化实例的属性。例如,newPersionName可以是实例的名字。

  • 确保实例独立性:每个实例在初始化时都会执行__init__,确保每个实例都有独立的属性和状态。

示例代码解释

以下是示例代码,展示了如何在Python中使用self和__init__:

class Person:    def __init__(self, newPersionName):        self.name = newPersionName    def sayYourName(self):        print("My name is %s" % self.name)
  • __init__方法:接受self和newPersionName参数,用于初始化实例的name属性。
  • sayYourName方法:通过self.name打印实例的名字。

总结

  • self:表示当前实例,用于访问实例属性和方法。
  • init:用于初始化实例,设置初始状态,接收参数,确保实例独立性。

通过理解和使用这些概念,你可以更好地管理类实例,编写更稳定和可靠的代码。

转载地址:http://osnj.baihongyu.com/

你可能感兴趣的文章
Objective-C实现euclideanDistance欧氏距离算法(附完整源码)
查看>>
Objective-C实现euler method欧拉法算法(附完整源码)
查看>>
Objective-C实现euler modified变形欧拉法算法(附完整源码)
查看>>
Objective-C实现eulerianPath欧拉路径算法(附完整源码)
查看>>
Objective-C实现Eulers TotientFunction欧拉函数算法(附完整源码)
查看>>
Objective-C实现eulers totient欧拉方程算法(附完整源码)
查看>>
Objective-C实现EulersTotient欧拉方程算法(附完整源码)
查看>>
Objective-C实现eval函数功能(附完整源码)
查看>>
Objective-C实现even_tree偶数树算法(附完整源码)
查看>>
Objective-C实现Exceeding words超词(差距是ascii码的距离) 算法(附完整源码)
查看>>
Objective-C实现exchange sort交换排序算法(附完整源码)
查看>>
Objective-C实现ExponentialSearch指数搜索算法(附完整源码)
查看>>
Objective-C实现extended euclidean algorithm扩展欧几里得算法(附完整源码)
查看>>
Objective-C实现ExtendedEuclidean扩展欧几里德GCD算法(附完整源码)
查看>>
Objective-C实现external sort外排序算法(附完整源码)
查看>>
Objective-C实现Factorial digit sum阶乘数字和算法(附完整源码)
查看>>
Objective-C实现factorial iterative阶乘迭代算法(附完整源码)
查看>>
Objective-C实现factorial recursive阶乘递归算法(附完整源码)
查看>>
Objective-C实现factorial阶乘算法(附完整源码)
查看>>
Objective-C实现factorial阶乘算法(附完整源码)
查看>>