zoukankan      html  css  js  c++  java
  • 面向对象编程_类

    封装
    东西封装进类里, 适用于多个函数调用同样的值




    继承
    class F:
    def f1()

    class S

    def f1(): 重写
    super(S, self).f1() 执行父类的方法1
    F.f1(self) 执行父类的方法2

    同时继承两个类 先找写在前面的

    class C(F,S) 如果F有父类并且F没有, 一条道走到黑 继续往F的父类找在找S
    但是如果两条道同时有一个父类 最后找共同的父类
    找到的类里面如果再调用,重新查找 而不是在那个类里面优先查找



    多态
    原生多态~
    原意是指 如果函数里面传递一个类,那么设置的数据类型也可以接受类的各种子类

    字段
    普通字段 保存在对象中, 只能通过对象访问
    静态字段 保存在类中 执行可以通过对象和类访问

    方法
    普通方法 保存在类中 可以通过对象来访问 self -> 调用对象
    静态方法 装饰器@staticmethod 可以用类直接访问, 不加self
    类方法 保存在类中 @classmethod 形参写cls -> 类名

    装饰器 @property 通过字段的形式访问一个方法 属性 特性 或者 函数2=property(fget=函数名)
    @XXX.setter 可以给XXX方法传值 fset
    @XXX.deleter 可以用del删除方法 fdel



    成员修饰符
    公有成员 外部可以访问
    私有成员 对象.__名字 两个下划线

    __init__ 创建对象的时候直接执行 类()自动执行
    __call__ 对象加括号直接执行 对象() 类()()
    __int__ int(对象) 自动执行
    __str__ str(对象) 自动执行
    __add__ 两个对象相加的时候执行
    __del__ 当对象被销毁的时候执行
    __dict__ 封装的所有内容以字典形式返回 对象和类都有
    __getitem__ 对象后面中括号里面的内容传进类 如果是切片 slice
    __setitem__ 赋值 li[1]=1
    __delitem__ 删除带有中括号的对线的时候执行
    __iter__ 执行for循环就找这里面的内容


    isinstance(obj, cls) 检查是否obj是否是类 cls 的对象
    issubclass(sub, super) 检查sub类是否是 super 类的派生类

    异常处理
    try:
    pass
    except Exception as e:

    AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
    IOError 输入/输出异常;基本上是无法打开文件
    ImportError 无法引入模块或包;基本上是路径问题或名称错误
    IndentationError 语法错误(的子类) ;代码没有正确对齐
    IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
    KeyError 试图访问字典里不存在的键
    KeyboardInterrupt Ctrl+C被按下
    NameError 使用一个还未被赋予对象的变量
    SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
    TypeError 传入对象类型与要求的不符合
    UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
    导致你以为正在访问它
    ValueError 传入一个调用者不期望的值,即使值的类型是正确的

    断言
    assert 条件 条件为真 无事发生 条件不成立直接退出

    反射
    hasattr(对象, 'name')
    getattr
    setattr
    delattr

    单例模式
    只创建一个类
    class Foo(object):

    __instance = None

    @staticmethod
    def singleton():
    if Foo.__instance:
    return Foo.__instance
    else:
    Foo.__instance = Foo()
    return Foo.__instance

    # ########### 获取实例 ###########
    obj = Foo.singleton()

  • 相关阅读:
    hihoCoder #1176 : 欧拉路·一 (简单)
    228 Summary Ranges 汇总区间
    227 Basic Calculator II 基本计算器II
    226 Invert Binary Tree 翻转二叉树
    225 Implement Stack using Queues 队列实现栈
    224 Basic Calculator 基本计算器
    223 Rectangle Area 矩形面积
    222 Count Complete Tree Nodes 完全二叉树的节点个数
    221 Maximal Square 最大正方形
    220 Contains Duplicate III 存在重复 III
  • 原文地址:https://www.cnblogs.com/btxlc/p/10031994.html
Copyright © 2011-2022 走看看