Python笔记_第三篇_面向对象_2.构造函数和析构函数(含self说明)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python笔记_第三篇_面向对象_2.构造函数和析构函数(含self说明),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3464字,纯文字阅读大概需要5分钟。
内容图文
![Python笔记_第三篇_面向对象_2.构造函数和析构函数(含self说明)](/upload/InfoBanner/zyjiaocheng/828/2f0e11c0564b4e588e759bae386f4cf5.jpg)
1. 构造函数:
为什么要有构造函数?
打一个比方:类的创建就是好比你创建了好了一种格式的房间,你租给上一个住户的后,里面会对方很多“垃圾”和不规则的物品摆放。构造函数就是下一个住户再使用的时候进行物品的初始化摆放,防止下一个用户再使用的时候会出现没有初始化物品错放的错误等。
构造函数的格式:
__init__( ):
注意:在使用创建对象的时候会自动调用,构造函数用于初始化类实例的状态。如果不显式的创建构造函数,默认会自动添加一个构造函数。其实由于没有本身都会带上这个构造函。但是还是要写上比较好。
举例说明:
class Person(object): def __init__(self,name,age,height,weight): print(name,age,height,weight) self.name = name self.age = age self.height = height self.weight = weight def run(self): print("run") def eat(self,food): print("eat " + food) per3 = Person("hanmeimei",20,170,55) print(per3.name,per3.age,per3.height,per3.weight) # hanmeimei 20 170 55 # hanmeimei 20 170 55 per4 = Person("lilei",18,180,80) print(per4.name,per4.age,per4.height,per4.weight) # lilei 18 180 80 # lilei 18 180 80
2. 析构函数:
为什么要有析构函数?
之前我们在第一篇关于内存详细解析的时候说过,在高级的语言类似于C/C++、java等不需要手动的去释放内存。在这类语言当中有自动的内存管理机制。其实析构函数就是释放类在调用后的一种内存释放作用。因此我们释放内存常用的一共有四种,释放类的内存,释放实例化的内存,释放函数内存,释放变量内存。析构函数就是释放类的内存的一种方式,但是我们有自动化的内存释放机制,这种方式一般我们也不太写。
格式:
__del__( )
举例说明:
# 第一种释放 class Person(object): def __init__(self,name,age,height,weight): self.name = name self.age = age self.height = height self.weight = weight def __del__(self): print("这里是析构函数") def run(self): print("run") def eat(self,food): print("eat " + food) def say(self): print("Hello! My name is %s, I am %d years old" %(self.name,self.age)) per5 = Person("hanmeimei",20,170,55) # 第二种释放 del per5 # 对象释放后就不能在访问了 # 第三种释放:在函数里定义的对象,会在函数结束时自动释放,这样可以用来减少内存空间的浪费。 def func(): perx = Person("aa",1,1,1) func()
3. self说明:
我们发现,在类的列表中有一个object的父类。在属性和方法的编写的时候出现了self的这个东西。这个东西就是一种“自身限制”的作用。解释如下:
self:表示类的实例,而非类。那个对象调用方法,那么该方法中的self代表那个对象。
self.__class__:代表类名。
self.表示调用自身类。表示当前实例的引用。意思是:他只能被用在下列类成员的代码块中。
self的目的:
用于区分类的成员和本地的变量或参数。
作为调用方法的实参。
self类似于C# 语言中的this.的意思。
举例说明:
class Person(object): def __init__(self,name,age,height,weight): # print(name,age,height,weight) self.name = name self.age = age self.height = height self.weight = weight def run(self): print("run") def eat(self,food): print("eat " + food) def say(self): print("Hello! My name is %s, I am %d years old" %(self.name,self.age)) # self不是关键字,换成其他的标识符也是可以的,但是帅的人一般都用self per = Person("Tom",20,160,80) per.say()
# 第一种释放
class Person(object):
def __init__(self,_name,_age,_height,_weight):
self.name = _name
self.age = _age
self.height = _height
self.weight = _weight
def __del__(self):
print("这里是析构函数")
def run(self):
print("run")
def eat(self,food):
print("eat " + food)
def say(self):
print("Hello! My name is %s, I am %d years old" %(self.name,self.age))
per5 = Person("hanmeimei",20,170,55)
# 第二种释放
del per5 # 对象释放后就不能在访问了
# 第三种释放:在函数里定义的对象,会在函数结束时自动释放,这样可以用来减少内存空间的浪费。
def func():
perx = Person("aa",1,1,1)
func()
内容总结
以上是互联网集市为您收集整理的Python笔记_第三篇_面向对象_2.构造函数和析构函数(含self说明)全部内容,希望文章能够帮你解决Python笔记_第三篇_面向对象_2.构造函数和析构函数(含self说明)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。