Python类和对象中函数的使用
1、__init__函数使用 2、__str__函数使用 3、__del__函数使用
前言
Python 是一种面向对象的编程语言。
Python 中的几乎所有东西都是对象,拥有属性和方法。
类(Class)类似对象构造函数,或者是用于创建对象的“蓝图”。
一、__init__函数
当类被调用的时候第一步是创建实例对象,一旦对象被创建python解释器就会调用类中的__init__()方法为实例对象添加预先定义的一些属性,如果类中没有定义这个方法,python解释器会去在这个类的父类中寻找,如果父类没有就会调用默认的__init__()方法。 通俗意义上讲,就是一个对类内部进行一个初始化定义。
1.例程
class Demo:
def __init__(self, num):
self.num = num
def add(self):
self.num += 1
print(self.num)
add_num = Demo(40)
add_num.add()
2.讲解
这里面40是传递到init函数的num中。且一切初始化定义都在init函数中被运行。在这个示例中主要对Demo类内部进行初始化定义,这里面主要是靠运行函数初始时由外界传入Demo类中,也可以进行函数内部自己初始化操作。如下
class Demo:
def __init__(self):
self.num = 90
def add(self):
self.num += 1
print(self.num)
add_num = Demo()
add_num.add()
ps:self函数名是只能在类内部使用,相当于一个局部变量,在外部使用会报错,如下图
二、__str__函数
当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
1.例程
class Demo:
def __init__(self):
self.num = 90
def __str__(self):
return "例程的数字大小是[%s]" % self.num
def add(self):
self.num += 1
add_num = Demo()
add_num.add()
print(add_num)
2.讲解
只要在类外部print了对象,str函数就会给这个print返回return关键字后面的代码表示,如果没有str函数,我们看看会发生什么,如下例程。
class Demo:
def __init__(self):
self.num = 90
def add(self):
self.num += 1
add_num = Demo()
add_num.add()
print(add_num)
这里面打印了Demo这个类对象的地址,所以说如果没有str函数只会打印对象地址
三、__del__函数
当一个对象的引用计数为0的时候会自动调用__del__()方法释放这个对象占用的内存,有的时候我们可以重写这个方法实现在删除对象的时候返回一些信息达到一些效果(就像游戏中击杀一个英雄的时候返回的一个击杀信息类似。 del函数可以理解为发挥余热的一个函数,也就是当一个生命周期完成时,会调用这个函数。
1.例程
class Demo:
def __init__(self, name):
self.name = name
def mz(self):
print("这个人是[%s]" % self.name)
def __del__(self):
print("[%s]生命周期完了" % self.name)
def __str__(self):
return "%s" % self.name
tom = Demo("Tom")
tom.mz()
print(tom)
Jerry = Demo("Jerry")
Jerry.mz()
print(Jerry)
print("-" * 50)
2.讲解
可以对 print("-" * 50) 输出可以看出,__del__ 函数是在整个函数代码运行完之后再进行调用。也就是当一个对象被销毁前会调用del函数。简洁说就是当代码全执行完成会调用del函数。同时也可以用del函数直接在类外部删除一个对象。如下 输出如下
总结
类和对象对开发人员开发大型应用有着不可或缺的作用,所以用好内置方法是非常重要的
|