• python面向对象编程基础


    1、oop的意义:oop就是代码的重用:分解代码,最小化代码的冗余以及对现存的代码进行定制来编写程序。而不是实地的修改代码,或者从头开始
    
    2、继承搜索在那里查找属性:继承搜索会先在实例对象中寻找属性,然后 才是创建实例的类,之后是所有较高的超类,由对象树底端到顶端,并且至右侧。当属性首次找到时,搜索就会停止。因为在此过程中变量名的最低版本会获胜。
    
    3、类对象和实例对象有什么不同:类和实例对象都是命名空间(由作为属性的变量包 )俩者 主要区别是,类是建立多个实例的工厂,类也支持运算符重载方法,由实例继承,而且其中的任何函数视为处理实例的特殊方法
    
    4、为什么类方法函数中的第一个参数特殊:类方法函数中的第一个参数之所以特殊,是因为他总是接受将方法调用视为隐含主体的实例对象。按照惯例,通常称为self.因为方法函数默认zonshi 含有这个隐含的主体对象环境,之所以是这个面向对象。也就是色好几用来处理或者修改对象
    
    5、__init__方法的作用:每次类实例创建时,python会自动调用它,这也称为构造函数。除了明确传入类的名称的任何参数外,还会因性道德传入新的实例。
    
    6、类有两个属性,一个是__class__,另外一个是__base__
    
    7、提取一个类的全部属性的工具类
    
                    class AttrDisplay:
    
                                    def gatherAttr(self):
    
                                                    attr = []
    
                                                    for key in sorted(self.__dict__):
    
                                                                    attr.append('%s=%s' %(key,getattr(self,key)))
    
                                    def __str__(self):
    
                                                    return '[%s:%s]' %(self.__class_.name,self.getAttr())
    
    8、对象的持久化
    
                    pickle  任意对象和字节串之间的序列化
    
                    dbm  实现一个可通过键访问的文件系统,以存储字符串
    
                    shelve  使用另两个按照键 把python对象 存储到一个文件中
    
                   
    
                    class Person(): pass
    
                    Tom = Person()
    
                    Jim = Person()
    
                    John = Person()
    
                    import shelve
    
                    db = shelve.open("persondb")
    
                    for object in (tom,Jim,John):
    
                                    db[字符串]=object
    
                    db.close()
    
    9、调用类的方法的两种方法
    
                    instancename.methodname(parameters)
    
                    或
    
                    classname.methodname(instancename,parameters)
    
                   
    
    10、抽象超类,需要由子类填充方法,他们也可以以特殊的类语法来实现
    
                    class Super:
    
                                    def delegate(self):
    
                                                    self.action()
    
                    class Provider(Super):
    
                                    def action(self):
    
                                                    print('in Provicer.action')
    
                    x = Provider()
    
                    x.delegate()    #输出:in Provicer.action
    
    11、Python 2.6和Python3.0的抽象超类
    
                    in  python3.0
    
                    from abc import ABCMeta,abstractmethod
    
                    class Super(metaclass = ABCMeta)
    
                                    @abstractmethod
    
                                    def method(self,...):
    
                                                    pass
    
                    例如:
    
                    from abc import ABCMeta,abstractmethod
    
                    class Super(metaclass=ABCMeta):
    
                                    def delegate(self):
    
                                                    self.action()
    
                                    @abstractmethod
    
                                    def action(self):
    
                                                    pass;
    
                    class Sub(Super):
    
                                    def action(self):
    
                                                    print('spam')
    
                    x = Sub()  # 不能通过一个抽象类创建一个实例,除非抽象类的抽象方法以及在子类定义
    
                    x.delegate()#输出:spam
    
                   
    
                    in python2.6
    
                    class Super
    
                                    __metaclass = ABCMeta
    
                                    @abstractmethod
    
                                    def method(self,...):
    
                                                    pass
    
    12、命名空间:完整内容
    
                    察看继承链
    
                    # file classtree.py
    
                    def classtree(cls,indent):
    
                                    print('.'*indent+cls.__name__)
    
                                    for supercls in cls.__base__:
    
                                                    classtree(supercls,indent+3)
    
                    def instancetree(inst):
    
                                    print('Tree of %s ' %inst)
    
                                    class(supercls,indent+3)
    
                   
    
                    在python3.0中会将object打印出来
    
    13、文档字符串
    
                    modulename.__doct__  #察看文档顶端的__doc__
    
                    modulename.functioname.__doc__#察看函数__doc__
    
                    modulename.classname.__doc__#察看类__doc__
    
                    modulename.classname.functionname.__doc__#察看类方法__doc__              
    
                    或者 通过help(modulename)察看
    

      

  • 相关阅读:
    免密登录配置
    C#实现文件Zip压缩
    mssql_Sqlserver创建Sqlserver DBlink
    mssql_Sqlserver创建Mysql DBlink
    VS创建项目清单
    css实现气泡对话框Demo
    安卓好用的软件和模块
    搭建Vmq
    解决openvmtools无法复制粘贴文件问题
    Python篇socket
  • 原文地址:https://www.cnblogs.com/hbcb533/p/3696987.html
Copyright © 2020-2023  润新知