码迷,mamicode.com
首页 > 其他好文 > 详细

02_对象和对象封装

时间:2020-07-29 15:27:36      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:专业   nbsp   image   src   ==   __init__   info   方式   loading   

# 1:什么是对象?
class File:
def read(self):
print(‘读取文件内容‘)


# F = File() # 实例化类
# 1: 其中file就叫File()的对象,其实很好理解,还记得变量的
# 关联关系吧,F变量名 和 File()变量值是关联关系所以通过F就
# 可以调用class File


# 2: self参数是什么?
class File1:
def read(self):
print("我是self的内存地址:%s" %(id(self))) # 打印self的内存地址


F1 = File1() # 实例化类
F1.read()
print("我是对象F1的内存地址:%s" % (id(F1))) # 打印对象F1的内存地址
# 根据上面得出,他们内存地址相同,所示说他们是同一块内存。所以说self就是
# F1 我们可以像下面这样表示加深印象
class File1:
def read(F1):
print("我是self的内存地址:%s" % (id(F1))) # 打印self的内存地址


F1 = File1() # 实例化类
F1.read()

# 总结1:类方法中的self其实就是类对象自己,它会把自己默认传入到方法中。。


# 3:了解对象封装
# 下面我们打印我们的基本信息,我们的参数来源全局变量,但是
# 这样参数其实就写死了,如果我们换个人来调用,打印的还是
# madison,所以我们需要写活这个参数。
name = ‘madison‘
age = 20
gender = ‘男‘
class Src:
def func(self):
print(f"我叫{name},今年{age}岁,性别{gender}")

# 优化方式:对象封装
class Src1:
def func(self):
print(f"我叫{self.name},今年{self.age}岁,性别{self.gender}")

S = Src1()
# S.name = ‘madison‘
S.name = ‘tom‘ # 这里我们随便换名字,此时函数内部也会改变所以写活。
S.age = 20
S.gender = ‘男‘
S.func()

# 优化2的写法是不专业,我们可以再给他优化专业化点
# 所以这里会用到 init 出现 init__(名字叫初始化)
# 特点:实例化类他就会运行。
class Src2:
def __init__(self):
print("我是__init__")

S2 = Src2() # 输出结果 ==》 我是__init__
# 所以说它是类里面一个特别的方法,它会自己调用。所以上面Sr1
# 我们可以写成下面这种方式:


class Src2:
# __init__(self,x,y,z)可以传参哦,因为他本来就是函数。
def __init__(self, name, age, gender):
self.name = name # self.name所以就靠外面传参给他
self.age = age # self.name所以就靠外面传参给他
self.gender = gender # self.name所以就靠外面传参给他

# 这里因为我们知道self是对象自己
S2 = Src2(‘madison‘, 20, ‘男‘)
# 打印看看是不是通过类把参数封装到对象内部去了
print(S2.name)
print(S2.age)
print(S2.gender)
# 这个时候我们就把name/age/gender这三个属性封装到对象S2中去了
# 所以这种方式的专业叫法是--> 类的初始化


# 总结2:我们通过 __init__初始化的方式,将参数封装到对象S中,那么类下面的
# 其他方法如果需要用到该参数,我们就可以从对象S中取出。所以方便方法取参,如下:
class Src2:
# __init__(self,x,y,z)可以传参哦,因为他本来就是函数。
def init(self, name, age, gender):
self.name = name # self.name所以就靠外面传参给他
self.age = age # self.name所以就靠外面传参给他
self.gender = gender # self.name所以就靠外面传参给他

def func1(self):
# 参数通过对象S2传给方法内部
print(f"我叫{self.name},今年{self.age}岁,性别{self.gender}")

S2 = Src2(‘madison‘, 20, ‘男‘)
S2.func1()

# 最后配上一张图
技术图片

 


 



02_对象和对象封装

标签:专业   nbsp   image   src   ==   __init__   info   方式   loading   

原文地址:https://www.cnblogs.com/haibaiwuchang/p/13396603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!