您的位置:首页 > 编程语言 > Python开发

Day7 - Python基础7 面向对象编程进阶

2018-11-11 20:02 627 查看

Python之路,Day7 - 面向对象编程进阶

 

本节内容:

  • 面向对象高级语法部分 经典类vs新式类  
  • 静态方法、类方法、属性方法
  • 类的特殊方法
  • 反射
  • 异常处理
  • Socket开发基础
  • 作业:开发一个支持多用户在线的FTP程序
  •   

    面向对象高级语法部分

    经典类vs新式类

    把下面代码用python2 和python3都执行一下

    classical vs new style:

    • 经典类:深度优先
    • 新式类:广度优先
    • super()用法

     

    抽象接口

    上面的代码仅在py2里有效,python3里怎么实现呢?

      

     

     

     

      

    静态方法

    通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法

    上面的调用会出以下错误,说是eat需要一个self参数,但调用时却没有传递,没错,当eat变成静态方法后,再通过实例调用时就不会自动把实例本身当作一个参数传给self了。

    想让上面的代码可以正常工作有两种办法

    1. 调用时主动传递实例本身给eat方法,即d.eat(d) 

    2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了

     加上构造方法

    So ,孩子记住,类 是由 type 类实例化产生

    那么问题来了,类默认是由 type 类实例化产生,type类中如何实现的创建类?类又是如何创建对象?

    答:类中有一个属性 __metaclass__,其用来表示该类由 谁 来实例化创建,所以,我们可以为 __metaclass__ 设置一个type类的派生类,从而查看 类 创建的过程。

    判断object中有没有一个name字符串对应的方法或属性
    def setattr(x, y, v): # real signature unknown; restored from __doc__
    """
    Sets the named attribute on the given object to the specified value.
    
    setattr(x, 'y', v) is equivalent to ``x.y = v''
    class Foo(object):
    
    def __init__(self):
    self.name = 'wupeiqi'
    
    def func(self):
    return 'func'
    
    obj = Foo()
    
    # #### 检查是否含有成员 ####
    hasattr(obj, 'name')
    hasattr(obj, 'func')
    
    # #### 获取成员 ####
    getattr(obj, 'name')
    getattr(obj, 'func')
    
    # #### 设置成员 ####
    setattr(obj, 'age', 18)
    setattr(obj, 'show', lambda num: num + 1)
    
    # #### 删除成员 ####
    delattr(obj, 'name')
    delattr(obj, 'func')
     

     

    动态导入模块

     

     

     

      

    异常处理 

    参考 http://www.cnblogs.com/wupeiqi/articles/5017742.html   

     

     

    Socket 编程

    参考:http://www.cnblogs.com/wupeiqi/articles/5040823.html

     

    作业:开发一个支持多用户在线的FTP程序

    要求:

    1. 用户加密认证
    2. 允许同时多用户登录
    3. 每个用户有自己的家目录 ,且只能访问自己的家目录
    4. 对用户进行磁盘配额,每个用户的可用空间不同
    5. 允许用户在ftp server上随意切换目录
    6. 允许用户查看当前目录下文件
    7. 允许上传和下载文件,保证文件一致性
    8. 文件传输过程中显示进度条
    9. 附加功能:支持文件的断点续传

     

      分类: Python自动化开发之路   好文要顶 关注我 收藏该文    金角大王
    关注 - 0
    粉丝 - 639     +加关注 1 0       « 上一篇:Python Select 解析 posted @ 2016-02-24 15:32 金角大王 阅读(2539) 评论(1)  编辑 收藏
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: