本次我们解决一下几个问题:
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 为空的对象。
结果如下:
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()
结果如下:
最后一行代码意思是创建了一个名为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", "")
结果如下: