zoukankan      html  css  js  c++  java
  • 第九章 Python之面向对象

    面向对象编程

      面向对象编程是一种程序设计思想,它把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数

      面向过程的程序设计把计算机程序视为一系列命令的集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数来降低系统的复杂度

      而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递

    类和实例

      类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”

    #定义类
    #类体代码在类的定义阶段就会立刻执行
    class Student:          #class后面紧接着是类名,类名通常是大写开头的单词
        school='oldgirl'
    
        def learn(self):
            print('is learning')
    
        def choose_course(self):
            print('choose course')
    
        print('===run')
    #查看属性
    print(Student.__dict__)  #查看类的名称空间
    print(Student.school)    #访问类的数据属性,等同于Student.__dic__['school']
    print(Student.learn)     #访问类的函数属性
    #增加属性
    Student.country='China'  #等同于Student.__dic__['country']='China'
    print(Student.country)
    #修改属性
    print(Student.school='Oldgirl')
    #删除属性
    del Student.country
    class Student:
        school='oldgirl'
    #__init__方法是在产生对象后才会执行,只用来为对象进行初始化操作,把name,age等属性绑上去,且不能有返回值
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def learn(self):
            print('is learning')
    
        def choose_course(self):
            print('choose course')
    
    #调用类即实例化(首先得到一个返回值即对象,该对象是一个空对象stu1;
    #其次执行Student__init__(stu1,'lary',18))
    stu1=Student('lary',18) #stu1.name='lary',stu1.age=18 print(stu1.name,stu1.age)

    属性查找与绑定方法

       查找对象的属性顺序是:对象自己的__dict__,再找类的__dict__

      类的数据属性是所有对象共享,类的函数属性是绑定给对象用的

    class Student:
        school='oldgirl'
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
        def learn(self):
            print('%s is learning'%self.name)
    
        def choose_course(self):
            print('choose course')
    
    stu1=Student('lary',18)
    stu2=Student('egon',20)
    #类的数据属性是所有对象共享的
    print(id(stu1.school),id(stu2.school))
    #类的函数属性是绑定给对象用的
    print(stu1.learn,stu2.learn)
    #<bound method Student.learn of <__main__.Student object at 0x0532F1D0>>
    #绑定类中定义的函数是绑定给对象用的,不同的对象就是不同的绑定方法
    #绑定给谁,就由谁来调用,谁调用,就将该对象当作第一个参数传给方法,即自动传值
    stu1.learn()        #stu1.learn=Student.learn(stu1)
    Student.learn(stu1) #类调用自身的方法需给位置参数传值
    #绑定到对象的方法这种自动传值的特征,决定了在类中定义的函数都要写一个默认参数(习惯用self,其他名字也可以)

    类即类型

      python中一切皆对象,且python3中类与类型是一个概念,类即类型

    #类即类型
    class Teacher:
    
        school='oldboy'
        count=0
    
        def __init__(self,name,age,sex):
            self.Name=name
            self.Age=age
            self.Sex=sex
            Teacher.count+=1
    
        def teach(self):
            print('%s teaching'%self.Name)
    
        def course(self):
            print('%s teach course'%self.Name)
    
    teacher1=Teacher('egon',18,'male')
    print(type(teacher1))
    
    p=[1,2,3,4]  #p=list([1,2,3,4])
    print(type(p))
    p.append(5)  #list.append(p,5)
    print(p)

    isinstance 和issubclass

    #isinstance(obj,cls)检查是否obj是否是类 cls 的对象
    class Foo(object):
        pass
    
    obj = Foo()
    print(isinstance(obj,Foo))
    #issubclass(sub, super)检查sub类是否是 super 类的派生类
    class Foo(object):
        pass
    
    class Bar(Foo):
        pass
    
    print(issubclass(Bar,Foo))
  • 相关阅读:
    一些可以参考的常用工具库类整理
    Java(Android)线程池 总结
    JAVA泛型
    设计模式总结
    原型模式
    工厂模式与抽象工厂模式
    组合模式
    适配器模式
    建造者模式
    外观模式
  • 原文地址:https://www.cnblogs.com/iamluoli/p/8298174.html
Copyright © 2011-2022 走看看