zoukankan      html  css  js  c++  java
  • Python全栈的知识点(3)

    Python类:
    1. 如果一类自己或基类中指定了metaclass,那么该类就是由metaclass指定的type或mytype创建。
    
    2. metaclass作用是指定当前类由谁来创建。
        - 源码
            如果类以基类中未指定metaclass:
                - __new__
                - __init__
            如果类以基类中指定metaclass:
                - 创建类
                    MyType.__init__    1.步生成类
                - 创建对象 
                    MyType.__call__    2.步创建对象
                        - __new__  3.生成对象
                        - __init__
    
    3. 类创建 
        a.- class Foo(object):pass             
        b.- Foo = type('Foo',(object,),{静态字段或者方法})
        c.- 执行自定义的mytype
            class Foo(metaclass=MyType):
                # __metaclass__ = MyType -->  python2
                pass 
    
    4. 谈谈你对面向对象的认识?
        父类/子类  <-->  基类/派生类
         - 基础:谈面向对象就要从他的三大特性开始说起,如:封装、继承、多态。
        1.封装:
            a.功能封装,相同的功能封装到一个类
            b.数据封装,面向同一个类别(比如人),不同的数据也可以封装进类中
        2.继承
            a.有共同方法时,可把此方法封装到父类,避免重复编写(子类继承即可)
        3.多态(鸭子模型):Python原生支持多态
            a.对于参数来说可以传入任何类型的对象,只要保证有想要的相同方法(send)即可。
               def (*args): 
               args.send()
    
    5. 进阶:
        __init__,初始化                __new__,创建对象
        __call__,对象()            __getattr__,对象.xx 
        __setattr__                __delattr__
        __setitem__,对象['xx']         __getitem__        __delitem__                
        __mro__,查找成员顺序            __enter__起始   <-->    __exit__结束 --》with语句
        __str__  返回字符串            __repr__    返回整洁形式    
        __iter__,迭代                __dict__,  返回字典数据类型
        __add__,一个对象加一个对象
    
    6. 令你印象深刻的事(好神奇)。
        obj._Foo__name      可以获取当前类中私有属性。生成实例对象,调用_类__name
    
    7. 类的约束:
        - 继承+抛出异常 (*class Base(object):
            def send(self):
            raise NotImplementedError('子类中必须实现send方法')
        import abc
        class Base(metaclass=abc.ABCMeta):
            @abc.abstractmethod
            def send(self):pass     ('子类中必须实现send方法')
    
    8. classmethod,staticmethod,property
             classmethod:类方法,将类的函数转换成类方法,函数上装饰@classmethod会将函数的自动传值参数改成cls。
             staticmethod:静态方法,此方法相当于给类扩展一个功能,将类内的函数实例化,给类或对象使用,此时类内的函数就是普通函数,不管是类还是实例化的对象都可以使用。
             property:实例化,类的实例化就会产生一个实例(对象),可以理解为类把虚拟的东西实例化,得到具体存在的值。
    
    9. 经典类、新式类
             经典类遵循:深度优先,python2中
             新式类遵循:广度优先,Python3中
  • 相关阅读:
    《动手能力强与技术水平低》(2009/12/14)
    《为什么程序员被喻为“IT农民工”》(2009/12/12)
    对于关键字Ref和Out的理解
    2008世界500强排名(1100位)
    Javascript取select的选中值和文本
    使用 FreeNAS 下載 eMule
    程序员35岁后的三条出路
    二维条码 QR Code
    笔记本CPU性能排行榜Comparison of Mobile Processors (CPU Benchmarks)
    如何在C#中播放AVI短片并使背景透明
  • 原文地址:https://www.cnblogs.com/Guishuzhe/p/9824923.html
Copyright © 2011-2022 走看看