zoukankan      html  css  js  c++  java
  • 02_对象和对象封装

    # 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()

    # 最后配上一张图
    
    
    


  • 相关阅读:
    Session的使用与Session的生命周期
    Long-Polling, Websockets, SSE(Server-Sent Event), WebRTC 之间的区别与使用
    十九、详述 IntelliJ IDEA 之 添加 jar 包
    十八、IntelliJ IDEA 常用快捷键 之 Windows 版
    十七、IntelliJ IDEA 中的 Maven 项目初体验及搭建 Spring MVC 框架
    十六、详述 IntelliJ IDEA 创建 Maven 项目及设置 java 源目录的方法
    十五、详述 IntelliJ IDEA 插件的安装及使用方法
    十四、详述 IntelliJ IDEA 提交代码前的 Code Analysis 机制
    十三、IntelliJ IDEA 中的版本控制介绍(下)
    十二、IntelliJ IDEA 中的版本控制介绍(中)
  • 原文地址:https://www.cnblogs.com/haibaiwuchang/p/13396603.html
Copyright © 2011-2022 走看看