zoukankan      html  css  js  c++  java
  • python之对象产生,属性(定义的值)的查找原则,对象绑定关系

    例1:                                 通过外部定义一个函数也可以传值进去

    class OldboyStudent:
        school='oldboy'


        def choose_course(self):
            print('is choosing course')


    stu1=OldboyStudent()
    stu2=OldboyStudent()
    stu3=OldboyStudent()



    def init(obj,x,y,z):               # 对象也是个名称空间,名称空间是用来存放对象自己独有是名字/属性 定义一个函数
    obj.name=x                       # 定义个函数,传入个对象以及属性,把属性直接增加对象名称空间里
    obj.age=y
    obj.sex=z


    init(stu1,'耗哥',18,'male')
    # stu1.name='耗哥'
    # stu1.age=18
    # stu1.sex='male'



    # stu2.name='猪哥'
    # stu2.age=17
    # stu2.sex='male'
    init(stu2,'诸哥',17,'male')


    # stu3.name='帅翔'
    # stu3.age=19
    # stu3.sex='female'
    init(stu3,'帅翔',19,'female')


    print(stu1.__dict__)
    print(stu2.__dict__)
    print(stu3.__dict__)

    '''

    class OldboyStudent:

            school='lodboy'

            def __init__(obj,x,y,z):                               #:__init__会在调用类时自动触发

                obj.name=x                                         #stu1.name='浩哥'

                obj.age=y                                            #stu1.age=18

                obj.sex=z                                            #stu1.sex='male'

          def choose_course(self):

                print('is choosing course')

       __init__方法:用于在调用类时/实例化时自动触发,为对象初始化自己独有的属性

    一.调用类时发生两个事情:

        1.创造一个空对象stu1

        2.自动触发类中__init__功能的执行,将stu1以及调用类括号内的参数一同传入,如下:

        stu1=OldboyStudent(‘浩哥’,18,‘male’)

        #OldboyStudent.__init__(‘stu1’,‘浩哥’,‘18’,‘male’)

        stu2=OldboyStudent(‘猪哥’,17,‘male’)

        stu3=OldboyStudent(‘帅翔’,19,‘famale’)

    2.对象的本质就是一个名称空间而已,对象名称空间是用存放对象自己独有的名字/属性,

        而类中存放是对象们共有是属性   (属性=值)

    print(stu1.__dict__)                    #查看stu1名称空间里传入的值/属性  
    print(stu2.__dict__)

    print(stu3.__dict__)

    二.属性的查找原则

        类用两种属性:数据属性和函数属性

        1.类的数据属性是所有对象共享的

        2.类的函数属性是绑定给对象用的

        先从对象自己的名称空间(容器:存放数据)里找,没有则去类中找,如果类和没有则报错

    三.绑定关系

        类:名称空间中定义的数据属性和函数属性都是共享给所有对象用的

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

    绑定方法:

            1.类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个值

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

                绑定给谁,就应该由谁来调用,谁调用就会将自己当做第一个参数传入

    补充:类中定义的函数。类可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,

            所以在类中定义的函数都应该自带一个参数self

    总结:

            对象是一个高度整合的产物,整合数据与专门操作该数据的方法(绑定方法)

        l=[1,2,3] #l=list([1,2,3])
        # print(type(l))
         l.append(4)         #list.append(l,4)
         list.append(l,4)

         print(l)

    强调对象精髓:

        对象不仅包含一系列数据(自己读独有的+与其他对象共有的),还包含专门操作该数据的方法

  • 相关阅读:
    JavaScript在Javascript中为String对象添加trim,ltrim,rtrim方法
    JavaScriptjs写的俄罗斯方块
    WinForm中“嵌入的资源”和“资源文件”数据的获取方式
    Facade模式(外观模式)
    windows服务安装程序中如何安装后自动启动
    水晶报表之主从多表数据源批量预览及打印开发设计
    IP地址分类简介
    水晶报表之各节的作用
    水晶报表开发之常用代码以及注意事项
    .Net中后台线程和前台线程的区别
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111946.html
Copyright © 2011-2022 走看看