本次我们解决一下几个问题:

self指什么,怎么用,init函数的用法,init函数怎么调用

首先我们需要明白几个名词的定义:

类(class):用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例

方法:类中定义的函数

实例化:创建一个类的实例,类的具体对象

对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法

1.self指什么,怎么用

在Python中,不管是构造方法还是实例方法,最少要包含一个参数,但是没有规定这个参数的具体名称,所以其命名为 self,遵守这个约定,以便于我们编写的代码具有更好的可读性。

在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数。同时self表示的类的实例而非类。

#! /usr/bin/python3

# 创建student类
class student:
    i = "why"   # 定义类属性
    # 定义类方法
    def f(self):
        return 'hello world'

# 类实例化
x = student()

print("student类属性为:", x.i)
print("student类方法f输出为:", x.f())

以上创建了一个新的类实例并将该对象赋给局部变量 x,x 为空的对象。

结果如下: 

python类方法中的init什么时候执行 python类 init_实例化

 2.init函数的用法,怎么调用

在创建类时,我们可以手动添加一个 __init__() 方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。

def __init__(self):

        self.data = []

__init__() 方法可以包含多个参数,但必须包含一个名为 self 的参数,且必须作为第一个参数。也就是说,类的构造方法最少也要有一个 self 参数。

#! /usr/bin/python3

# 定义一个类
class study:
    # 构造方法
    def __init__(self):
        print("调用构造方法")
    # 定义一个类属性
    i = "why"
    # 定义一个类方法
    def f(self,content):
        print(content)

wanghaiyu = study()

结果如下:

python类方法中的init什么时候执行 python类 init_构造方法_02

 最后一行代码意思是创建了一个名为wanghaiyu的study类对象

显然,在创建wanghaiyu这个对象时,隐式调用了我们手动创建的 __init__() 构造方法。

类定义了 __init__() 方法,类的实例化操作会自动调用 __init__() 方法。

注意,即便不手动为类添加任何构造方法,Python 也会自动为类添加一个仅包含 self 参数的构造方法。

仅包含 self 参数的 __init__() 构造方法,又称为类的默认构造方法。

不仅如此,在 __init__() 构造方法中,除了 self 参数外,还可以自定义一些参数,参数之间使用逗号“,”进行分割。代码如下所示:

#! /usr/bin/python3

# 定义一个类
class study:
    # 构造方法
    def __init__(self, name, add):
        print(name, "的网址为:", add)

# 创建add对象,并传参给构造函数
add = study("CSDN", "")

结果如下:

python类方法中的init什么时候执行 python类 init_构造方法_03