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

    # 最后配上一张图
    
    
    


  • 相关阅读:
    手起刀落-一起来写经典的贪吃蛇游戏
    同步、异步、回调执行顺序之经典闭包setTimeout分析
    起步
    设计模式之单例模式与场景实践
    青春是如此美好,又怎忍平凡度过
    nvm管理不同版本的node和npm
    起步
    基础
    调用wx.request接口时需要注意的几个问题
    微信小程序实现各种特效实例
  • 原文地址:https://www.cnblogs.com/haibaiwuchang/p/13396603.html
Copyright © 2011-2022 走看看