• 面向对象,为对象定制自己独有的属性, 属性查找, 绑定方法, 类即类型, 继承与派生, 继承的应用


    一,

         

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

         对象本质也就是一个名称空间而已,对象名称空间是用来存放对象自己独有的名字/属性,而类中存放的是对象们共有         的   属性。

    二,应用:

         

    class OldboyStudent:
    school='oldboy'


    def __init__(obj, x, y, z): #会在调用类时自动触发 #定制对象独有的数据
    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')

    #调用类时发生两件事
    #1、创造一个空对象stu1
    #2、自动触发类中__init__功能的执行,将stu1以及调用类括号内的参数一同传入
    stu1=OldboyStudent('耗哥',18,'male') #OldboyStudent.__init__(stu1,'耗哥',18,'male')
    stu2=OldboyStudent('猪哥',17,'male')
    stu3=OldboyStudent('帅翔',19,'female')


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


    三。属性查找

    注意:先从对象自己的名称空间找,没有则去类中找,如果类也没有则报错。
    习题:
    需求:计算出实例化后的次数。

    class OldboyStudent:
    school='oldboy'
    count=0 #再类的名称空间中,对象和类都可以共享到。所以初始化0写到这里。

    def __init__(self, x, y, z): #会在调用类时自动触发
    self.name = x #stu1.name='耗哥'
    self.age = y #stu1.age=18
    self.sex = z #stu1.sex='male'
    OldboyStudent.count+=1

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


    # 先从对象自己的名称空间找,没有则去类中找,如果类也没有则报错
    stu1=OldboyStudent('耗哥',18,'male')
    stu2=OldboyStudent('猪哥',17,'male')
    stu3=OldboyStudent('帅翔',19,'female')

    print(OldboyStudent.count)
    print(stu1.count) #实例化都是3次
    print(stu2.count) #实例化都是3次
    print(stu3.count) #实例化都是3次


    四,绑定方法:

    注意:
    # 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
    # 对象名称空间中定义的只有数据属性,而且时对象所独有的数据属性
    # 类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个
    # 补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self
    例子:

    class OldboyStudent:
    school='oldboy'


    def __init__(self, x, y, z): #会在调用类时自动触发
    self.name = x #stu1.name='耗哥'
    self.age = y #stu1.age=18
    self.sex = z #stu1.sex='male'

    def choose_course(self):
    print('%s is choosing course' %self.name) #因为里面要调用name,所以里面传对象自己

    def func():
    pass
    # 类名称空间中定义的数据属性和函数属性都是共享给所有对象用的
    # 对象名称空间中定义的只有数据属性,而且时对象所独有的数据属性

    stu1=OldboyStudent('耗哥',18,'male')
    stu2=OldboyStudent('猪哥',17,'male')
    stu3=OldboyStudent('帅翔',19,'female')

    # print(stu1.name)
    # print(stu1.school)


    # 类中定义的函数是类的函数属性,类可以使用,但使用的就是一个普通的函数而已,意味着需要完全遵循函数的参数规则,该传几个值就传几个
    # print(OldboyStudent.choose_course) #打印出来的就是函数的内存地址。
    # OldboyStudent.choose_course(123) #类中调用类中定义的函数,使用的时候就是一个普通的函数
    # OldboyStudent.choose_course(stu1) #有几个参数就传几个参数

    # 类中定义的函数是共享给所有对象的,对象也可以使用,而且是绑定给对象用的,
    #绑定的效果:绑定给谁,就应该由谁来调用,谁来调用就会将谁当作第一个参数自动传入
    # print(id(stu1.choose_course))
    # print(id(stu2.choose_course))
    # print(id(stu3.choose_course)) #以上三个的id地址都是一样的。
    # print(id(OldboyStudent.choose_course)) #和以上三个的id 地址不一样

    # print(id(stu1.school))
    # print(id(stu2.school))
    # print(id(stu3.school)) #以上三个的id地址都一样
    #
    # print(id(stu1.name),id(stu2.name),id(stu3.name)) #地址也都是一样的。


    # stu1.choose_course(1)
    # stu2.choose_course(2)
    # stu3.choose_course(3)
    stu1.func()

    # 补充:类中定义的函数,类确实可以使用,但其实类定义的函数大多情况下都是绑定给对象用的,所以在类中定义的函数都应该自带一个参数self

    五,类即类型:

    #对象调用类中的函数时,会自动把对象自己传进函数内

    #在python3中统一了类与类型的概念,类就是类型
    class OldboyStudent:
    school='oldboy'

    def __init__(self, x, y, z): #会在调用类时自动触发
    self.name = x #stu1.name='耗哥'
    self.age = y #stu1.age=18
    self.sex = z #stu1.sex='male'

    def choose_course(self,x):
    print('%s is choosing course' %self.name)

    stu1=OldboyStudent('耗哥',18,'male')
    # stu1.choose_course(1) #对象调用类中的函数时,会自动把对象自己传进函数内
    # #OldboyStudent.choose_course(stu1,1) #类再调用自己定义的函数时,使用时就是单纯的函数,有几个参数就要传几个参数。
    # OldboyStudent.choose_course(stu1,1)


    l=[1,2,3] #l=list([1,2,3]) #list是类,l是生成的对象。
    # print(type(l))
    # l.append(4) #list.append(l,4) #l对象调用list类里面的内置函数
    list.append(l,4) #类调用自己定义的函数时,该传几个参数就传几个参数,第一个参数为对象l
    print(l)






  • 相关阅读:
    数据库_连接查询
    日志
    日常小技巧
    『转载』OpenLayers 5 使用turf.js渲染克里金插值计算的等值面
    Openlayers3中如何优雅的表示等值面
    远程桌面拷贝超大文件
    turf.js intersect()裁剪存在空洞
    web worker示例demo
    meta标签作用
    geojson 标准格式学习
  • 原文地址:https://www.cnblogs.com/fxc-520520/p/9229777.html
Copyright © 2020-2023  润新知