zoukankan      html  css  js  c++  java
  • 对象成员的操作

    什么是成员对象

    • 一个对象通过实例化后,那么在类中定义的属性和方法,可以使用实力化的对象进行操作
    • 类中定义的属性也称为 成员属性
    • 类中等于的方法,也可称为成员方法

    1一个类可以实例化多个对象

    class Cart():
        color = '白色'  # 表示颜色的属性
        barnd = 'AoDi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        def lahuo(self):
            print("可以拉货")
    
        def laren(self):
            print("可以拉人")
    
        def doufeng(self):
            print("可以兜风")
    
    a = Cart()
    b = Cart()
    print(a)    #<__main__.Cart object at 0x000001A91FBE6640>
    print(b)    #<__main__.Cart object at 0x000001A91FC17A00>
    
    • 上面a和b变量都是对象,也都是通过Cart类实例化处理的对象

    2.对象的成员操作:分为2部分 1是: 在类外部,使用对象操作成员 2是:通过对象访问类中的方法(函数)

    1. 在类外部,使用对象操作成员

    1.访问成员属性,先访a自身的color属性,如果没有,会访问这个a对象Cart类的color属性

    class Cart():
        color = '白色'  # 表示颜色的属性
        barnd = 'AoDi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        def lahuo(self):
            print("可以拉货")
    
        def laren(self):
            print("可以拉人")
    a = Cart()
    b = Cart()
    #当访问成员属性时,先访a自身的color属性,如果没有,会访问这个a对象Cart类的color属性
    res = a.color
    print(res) 
    
    E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
    白色
    

    2修改属性的值,实际上等于给对象创建了一个a对象自己的color属性

    class Cart():
        color = '白色'  # 表示颜色的属性
        barnd = 'AoDi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        def lahuo(self):
            print("可以拉货")
    
        def laren(self):
            print("可以拉人")
    a = Cart()
    b = Cart()
    
    a.color = "黑"
    print(a.color)
    
    E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
    黑
    

    3给对象添加属性 : 给当前a对象创建了自己独有的属性

    注意: 此时name的属性,只属于a对象

    class Cart():
        color = '白色'  # 表示颜色的属性
        barnd = 'AoDi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        def lahuo(self):
            print("可以拉货")
    
        def laren(self):
            print("可以拉人")
    a = Cart()
    b = Cart()'
    #改对象a增加了自己独有的属性 name
    a.name = 'A6'
    print(a.name)
    
    E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
    A6
    

    4删除对象属性

    注意: 删除属性的时候,只能删除对象当前自己的属性 包含给对象添加和修改的属性,都可以删除
    *

    class Cart():
        color = '白色'  # 表示颜色的属性
        barnd = 'AoDi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        def lahuo(self):
            print("可以拉货")
    
        def laren(self):
            print("可以拉人")
    a = Cart()
    b = Cart()
    a.name = 'A6'
    del a.barnd   #报错del a.barnd AttributeError: barnd  #brand属性不能删除,因为 barnd属性是 Cart类的,
    
    del a.name     #name属性可以删除, 因为 name属性是后来给a对象单独添加的name属性,
    

    2 ,通过对象访问类中的方法(函数)

    1.访问对象的方法: 如果a对象没有自己的独立方法,那么会访问这个对象的类的方法

    class Cart():
        # 属性 == 特征  ==变量
        color = '白色'  # 表示颜色的属性
        barnd = 'aodi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        # 方法 == 功能 == 函数
    
        def lahuo(self):
            print("可以拉货")
    
        def laren(self):
            print("可以拉人")
    res = Cart()
    a = Cart()
    res.lahuo()
    
    E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
    可以拉货
    

    2 修改对象方法,

     
    
    #修改a对象的方法,给这个对象的方法重新定义  ??????给Cart类的 lahuo方法重新赋值一个func方法
    def func():
        print("这是一个新方法")
    a.lahuo = func    #把一个函数赋值给成员
    a.lahuo()
    
    E:\python3810\python.exe D:/py/test/gao/面向对象/对象成员的操作.py
    这是一个新方法
    

    3 添加新的方法,

    class Cart():
        # 属性 == 特征  ==变量
        color = '白色'  # 表示颜色的属性
        barnd = 'aodi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        def lahuo(self):
            print("可以拉货")
    
        def laren(self):
            print("可以拉人")
    a = Cart()
    
    def func():
        print("这是1个新方法")
    a.lahuo = func    #把一个函数赋值给成员
    
    # 添加新方法: 给这个对象自己新创建的方法
    a.func2 = func
    a.func2()
    

    4.删除方法

    class Cart():
        # 属性 == 特征  ==变量
        color = '白色'  # 表示颜色的属性
        barnd = 'aodi'  # 品牌属性
        pailing = 3.4  # 排量属性
    
        def lahuo(self):
            print("可以拉货")
        def laren(self):
            print("可以拉人")
    
    a = Cart()
    def func():
        print("这是1个新方法")
    
    # 添加新方法func: 给对象a自己新创建的方法.是a独有的方法
    a.func2 = func
    
    #删除 可以删除当前对象自己的方法
    del a.func2 #可以删除
    del a.lahuo #不可以删除,对象的类的方法
    

    3总结

    一个类定义类成员属性和成员方法, 那么通过这个类实例化的对象,也具备这些方法和属性吗 ?

    • 实际上,创建对象的时候,并不会把类中的属性和方法复制一份给对象,而是在对象中引用父类的方法
    • 因此,在访问对象的属性时,会先找对象自己的属性,如果没有就去找这个类的属性和方法

    • 一个对象有类创建后,是一个独立的对象,会引用父类的属性和方法
    • 如果在创建后,给对象的属性和方法,进行修改或添加,那么等于给这个对象创建了一个自己的属性和方法,
    • 所以在删除时,只能删除对象被修改或者添加的成员
  • 相关阅读:
    【每天都要看一下】
    【这里有别人的经验,也有好玩的发现】
    【WPF】Listbox模板内button点击选中当前listboxItem
    【WFP】弹出窗口不在win10 任务列表里显示的方法
    PSD路径转换为 WPF path 的data
    【WPF】Listbox内item的样式替换默认选中样式和鼠标滑过样式
    【WPF】ListBox1内嵌套ListBox2 2的滑轮滚动阻止1的滚动解决方法
    【C#】文本框拼音检索汉字
    【WPF】Datagrid显示最低下一跳
    【C#】绝对随机数
  • 原文地址:https://www.cnblogs.com/john5yang/p/15662072.html
Copyright © 2011-2022 走看看