前言
哈喽, 大家好, 我是了不起!
欢迎大家来观看了不起的冒险之旅. 为了方便起见, 文中以小知为名. 讲述了不起在Python异世界的冒险之旅.
天空之城是座高耸云端的城堡. 位于西海岸附近, 在城堡的最顶端可以眺望到天空之海. 直到格兰之森那场大火的发生,使得围绕在它周围的魔法阵力量减弱,人们才终于重新看到天空之城的真实模样. 当时,关于天界的传闻甚至比天上的繁星还多,但是却没有一个人能够证明它真实存在。
实例对象和类对象创建过程内存分析
我们以下面代码为例,分析整个创建过程:
classStudent:
company="sxd"#类属性
count=0#类属性
def__init__(self,name,score):
self.name=name#实例属性
self.score=score
Student.count=Student.count+1
defsay_score(self):#实例方法
print("我的公司是:",Student.company)
print(self.name,"的分数是:",self.score)
s1=Student("时间静止",18)#s1是实例对象,自动调用__init__()方法
s2=Student("不是简史",81)
s1.say_score()
print('一共创建{0}个Student对象'.format(Student.count))
print("s1的引用:",id(s1))
print("s2的引用:",id(s2))
print("Student的引用:",id(Student))
默认的类方法
init构造方法和__new__ 方法
初始化对象, 我们需要定义构造函数
__init__()
方法 构造方法用于执行“实例对象的初始化工作”, 即对象创建后, 初始化当前对象的相关属性, 无返回值 如果将对象比作一座房子, 则构造方法(__init__)
是负责初始化(装修) , 不是建对象(房子)
__init__()
的要点如下(约等于Java的构造方法):
-
名称固定, 必须为:
__init__()
-
第一个参数固定, 必须为:
self
.self
指的就是刚刚创建好的实例对象 -
构造函数通常用来初始化实例对象的实例属性 通过“
类名(参数列表)
”来调用构造函数. 调用后, 将创建好的对象返回给相应的变量. 比如:s1 = Student("时间静止", 80)
-
__init__()
方法: 初始化创建好的对象,初始化指的是: "给实例属性赋值" -
如果我们不定义
__init__
方法, 系统会提供一个默认的__init__
方法. 如果我们定义了带参的__init__
方法, 系统不创建默认的__init__
方法 -
__new__()
方法: 用于创建对象, 但我们一般无需重定义该方法
注意:
- Python中的 self 相当于C++中的 self指针 , JAVA和C#中的 this 关键字
- Python中, self 必须为构造函数的第一个参数, 名字可以任意修改, 但一般都叫做 self.他的作用是指向当前对象的本身/当前对象的引用
__del__方法(析构函数)和垃圾回收机制
__del__()
称为“析构方法”, 用于实现对象被销毁时所需的操作. 比如: 释放对象占用的资源, 例如: 打开的文件资源、网络连接等
注意:
-
Python实现自动的垃圾回收, 当对象没有被引用时(引用计数为0), 由垃圾回收器调用
__del__()
-
我们也可以通过 del语句 删除对象, 从而保证调用
__del__()
-
系统会自动提供
__del__
方法 , 一般不需要自定义析构方法.
实操代码
classPerson:
def__del__(self):
print("销毁对象:{0}".format(self))
p1=Person()
p2=Person()
delp2
print("程序结束")
-
代码
+关注
关注
30文章
4741浏览量
68326 -
python
+关注
关注
55文章
4779浏览量
84440
发布评论请先 登录
相关推荐
评论