• 对象的绑定方法


    一、对象的绑定方法

    class OldboyStudent:
        school = 'oldboy'
    
        def __init__(self, name, age, gender):
            self.name = name
            self.age = age
            self.sex = gender
    
        def choose_course(self):
            print(f'{self.name} choosing course')
    
        def func(self):
            print('from func')
    
    • 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的

    • 对象名称空间中定义的只有数据属性,而且是对象所独有的数据属性

    二、类使用对象的绑定对象

    stu1 = OldboyStudent('nick', 18, 'male')
    stu2 = OldboyStudent('sean', 17, 'male')
    stu3 = OldboyStudent('tank', 19, 'female')
    
    print(stu1.name)
    print(stu1.school)
    
    nick
    oldboy
    
    • 类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个
    print(OldboyStudent.choose_course)
    
    <function OldboyStudent.choose_course at 0x10558e840>
    
    try:
        OldboyStudent.choose_course(123)
    except Exception as e:
        print(e)
    
    'int' object has no attribute 'name'
    

    三、对象使用对象的绑定方法

    • 类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的,

    • 绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入

    print(id(stu1.choose_course))
    print(id(stu2.choose_course))
    print(id(stu3.choose_course))
    print(id(OldboyStudent.choose_course))
    
    4379911304
    4379911304
    4379911304
    4384680000
    
    print(id(stu1.school))
    print(id(stu2.school))
    print(id(stu3.school))
    
    4380883688
    4380883688
    4380883688
    
    print(id(stu1.name), id(stu2.name), id(stu3.name))
    
    4384509600 4384506072 4384507864
    
    stu1.choose_course()
    
    nick choosing course
    
    stu2.choose_course()
    
    sean choosing course
    
    stu3.choose_course()
    
    tank choosing course
    
    • 补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self
    stu1.func()
    
    from func
    
    stu2.func()
    
    from func
  • 相关阅读:
    排序算法之——冒泡排序优化
    Linux程序在预处理、编译、汇编、链接、运行步骤的作用
    理解可变参数的原理
    对虚函数、虚表的认识
    成员函数的重载、覆盖、隐藏
    centOS7-mariadb的安装
    centOS7-本地源配置
    vmware中桥接、NET、仅主机模式详解
    XXX系统项目目标文档课堂讨论
    做生活的有心人——xxx系统第一阶段总结
  • 原文地址:https://www.cnblogs.com/nickchen121/p/10987600.html
Copyright © 2020-2023  润新知