五、核心知识梳理
1.面向对象之self理解和封装
1.1 例子
#!/usr/bin/env python
#-*- coding:utf-8 -*-
class test:
def func_1(self,para_1):
print (para_1,self)
obj = test()
obj01 = test()
print (obj)
print (obj.func_1('option'))
print ('===================')
print (obj01)
print (obj01.func_1('option'))
-
obj
-
obj01
两个值相同
self是一个形式参数,Python内部传递
obj = test()
obj.func_1('option')
这个过程,将obj传递给self,将option传递给func_1
1.2 为啥要对class进行实例化成一个对象
具体的类
class test:
def func_1(self,para_1):
print (para_1,self)
return self.para_1
def func_2(self,para_1):
print (para_1,self)
def func_3(self,para_1):
print (para_1,self)
obj = test()
obj.para_1 = 'haha'
print (obj.func_1())
print (obj.func_2())
print (obj.func_3())
这种要重传参数
obj = test()
obj.para_1 = 'haha'
obj.func_1('123')
obj.func_2('456')
obj.func_3('789')
而且para_1
的赋值不能丢
所以要对代码进行修改
进行修改:
class test:
def func_1(self):
print (self.para_1,self)
return self.para_1
def func_2(self):
print (self.para_1,self)
return self.para_1
def func_3(self):
print (self.para_1,self)
return self.para_1
obj = test()
obj.para_1 = 'haha'
print (obj.func_1())
print (obj.func_2())
print (obj.func_3())
内部结构图
将类test实例化成对象obj,然后在对象obj中定义一个变量对应的值:obj.para_1=‘haha’。
方法中的self,就是指实例化的对象obj,通过self.para_1,就是调用obj这个对象中的para_1参数的值
1.3 面对对象之常用封装方法
class test:
def __init__(self, a): # 使用__init__方法,进行变量初始化
self.para_1 = 'liuyifei' # 初始化一个对象中的变量para_1,并赋值'liuyifei'
self.para_2 = a # 初始化对象中的变量para_2并将实例化后的对象传递进来的参数赋值给para_2
def func_1(self):
return self.para_1, self.para_2
def func_2(self):
return self.para_1, self.para_2
def func_3(self):
return self.para_1, self.para_2
obj = test('biubiubiu') # 实例化一个类,形成一个对象obj,并将值biubiubiu传递给__init__中的形参a
print (obj.func_1())
print (obj.func_2())
print (obj.func_3())
obj_temp = test('1111111')
print (obj_temp.func_1())
print (obj_temp.func_2())
print (obj_temp.func_3())
这里a形参