3、第六 - 类的实例化过程剖析

类的实例化过程剖析


 

类的实例化过程剖析

 1、举例说明:

class Name(object):
def __init__(self,name,height):#构造函数、构造方法==初始化方法
self.name = name
self.height = height
def Gender(self,gender):#类的方法
print("He is Name %s; Boy Or Gril %s " % (self.name,gender))
def Height(self):#类的方法
print("身高:%s" % self.height)
Persion = Name("chen1203","170CM")#实例化后产生的对象叫实例
Persion.Gender("Boy")
Persion.Height()
输出:
He is Name: 'chen1203'; Boy Or Gril: 'Boy'
身高:170CM

注释:

class Name(object): #定义一个类,class是定义类的语法,Name是类名,(object)是新式类的写法(后面在介绍新式类。)
def __init__(self,name,height): 初始化函数,在生成一个角色时要初始化的一些属性就填写在这里。(下面def调用的类函数中,如果有相同的属性,可以填写在这里)
self.name = name #__init__中的第一个参数self,和这里的self都 是什么意思? 看下面解释

__init__():
__init__()叫做初始化方法(或构造方法), 在类被调用时,这个方法(虽然它是函数形式,但在类中就不叫函数了,叫方法)会自动执行,进行一些初始化的动作,所以我们这里写的__init__(self,name,height)就是要在创建一个角色时给它设置这些属性。参数self前面有单独讲到

#类的方法,(self,gender) gender参数里面自定义的,是局部的,不是实列全局的。所以调用本函数的时候,只能在本函数中正常的传参使用。
def Gender(self,gender):
print("He is Name %s; Boy Or Gril %s " % (self.name,gender))

#类的方法,调用的是上面定义的__init__里面的函数
def Height(self):
print("身高:%s" % self.height)

总结:
  A、上面的这个Persion = Name("chen1203","170CM")动作,叫做类的“实例化”,就是把一个虚拟的抽象的类,通过这个动作,变成了一个具体的对象了,这个对象就叫做实例。
  B、刚才定义的这个类体现了面向对象的第一个基本特性,封装,其实就是使用构造方法将内容封装到某个具体对象中,然后通过对象直接或者self间接获取被封装的内容。

 

2、图解三步调用方法:

盗用一下代码跟图,理解一下:

class Dog(object):
def __init__(self, name, dog_type):
self.name = name
self.type = dog_type
def sayhi(self):
print("hello,I am a dog, my name is ", self.name)
d = Dog('LiCh**', "京巴")
d.sayhi()

 

 

顺序如下::::
赋值:d = Dog('LiCh**', "京巴") 相当于 Dog(d,'LiCh**', "京巴")
第一步:d开始赋值,在内存中申请一块空间,命名为d,
第二步:把d的地址和赋值参数传给Dog,以下这部分代码:

class Dog(object):
def __init__(self, name, dog_type):
self.name = name
self.type = dog_type        

第三步:self参数传递:self.name = name 其实就是 d.name = LiCh**;self.type = dog_type 就是 d.type = "京巴" 。

根据上图我们得知,其实self,就是实例本身!你实例化时python会自动把这个实例本身通过self参数传进去。  

  

posted on 2018-02-23 19:05  C.Q&CHEN  阅读(151)  评论(0)    收藏  举报

导航