zoukankan      html  css  js  c++  java
  • Day 21 OOP

    day 21思维导图

    一 polymorphism /ˌpɒlɪˈmɔːfɪz(ə)m/ 多态

    Polymorphism is taken from the Greek words Poly (many) and morphism (forms). It means that the same function name can be used for different types. This makes programming more intuitive /ɪnˈtjuːɪtɪv/ 直觉的 and easier.

    Polymorphism with Inheritance

    Polymorphism in python defines methods in the child class that have the same name as the methods in the parent class. In inheritance, the child class inherits the methods from the parent class. Also, it is possible to modify a method in a child class that it has inherited from the parent class.

    This is mostly used in cases where the method inherited from the parent class doesn’t fit the child class. This process of re-implementing a method in the child class is known as Method Overriding方法覆盖.

    Duck Typing

    Duck typing is a concept related to dynamic typing, where the type or the class of an object is less important than the methods it defines. When you use duck typing, you do not check types at all. Instead, you check for the presence of a given method or attribute.

    二 Python Operator Overloading 面向对象高级

    You can change the meaning of an operator in Python depending upon the operands used.

    Python Special Functions

    Class functions that begin with double underscore __ are called special functions in Python.

    These functions are not the typical functions that we define for a class. The __init__() function we defined above is one of them. It gets called every time we create a new object of that class.

    There are numerous other special functions in Python.

    Overloading Arithmetic Operators

    OperatorExpressionInternally
    Addition p1 + p2 p1.__add__(p2)
    Subtraction p1 - p2 p1.__sub__(p2)
    Multiplication p1 * p2 p1.__mul__(p2)
    Power p1 ** p2 p1.__pow__(p2)
    Division p1 / p2 p1.__truediv__(p2)
    Floor Division p1 // p2 p1.__floordiv__(p2)
    Remainder (modulo) p1 % p2 p1.__mod__(p2)
    Bitwise Left Shift p1 << p2 p1.__lshift__(p2)
    Bitwise Right Shift p1 >> p2 p1.__rshift__(p2)
    Bitwise AND p1 & p2 p1.__and__(p2)
    Bitwise OR p1 | p2 p1.__or__(p2)
    Bitwise XOR p1 ^ p2 p1.__xor__(p2)
    Bitwise NOT ~p1 p1.__invert__()

    Overloading Comparison Operators

    OperatorExpressionInternally
    Less than p1 < p2 p1.__lt__(p2)
    Less than or equal to p1 <= p2 p1.__le__(p2)
    Equal to p1 == p2 p1.__eq__(p2)
    Not equal to p1 != p2 p1.__ne__(p2)
    Greater than p1 > p2 p1.__gt__(p2)
    Greater than or equal to p1 >= p2 p1.__ge__(p2)

    三 Reflection 反射

    Reflection refers to the ability for code to be able to examine attributes about objects that might be passed as parameters to a function. For example, if we write type(obj) then Python will return an object which represents the type of obj.

    Using reflection, we can write one recursive reverse function that will work for strings, lists, and any other sequence that supports slicing and concatenation. If an obj is a reference to a string, then Python will return the str type object. Further, if we write str() we get a string which is the empty string. In other words, writing str() is the same thing as writing “”. Likewise, writing list() is the same thing as writing [].

    https://www.geeksforgeeks.org/reflection-in-python/

    四 Exception Handling 异常处理

    When an error occurs, or exception as we call it, Python will normally stop and generate an error message.

    These exceptions can be handled using the try statement:

    The try block will generate an exception, because x is not defined:

    try:
    print(x)
    except:
    print("An exception occurred")

    Since the try block raises an error, the except block will be executed.

    Without the try block, the program will crash and raise an error

    Many Exceptions

    You can define as many exception blocks as you want

    Else

    You can use the else keyword to define a block of code to be executed if no errors were raised:

    Finally

    The finally block, if specified, will be executed regardless if the try block raises an error or not.

    This can be useful to close objects and clean up resources:

    try:
    print(x)
    except:
    print("Something went wrong")
    finally:
    print("The 'try except' is finished")

    Raise an exception

    As a Python developer you can choose to throw an exception if a condition occurs.

    To throw (or raise) an exception, use the raise keyword.

    x = -1

    if x < 0:
    raise Exception("Sorry, no numbers below zero")

    The raise keyword is used to raise an exception.

    You can define what kind of error to raise, and the text to print to the user.

    x = "hello"

    if not type(x) is int:
    raise TypeError("Only integers are allowed")

     

  • 相关阅读:
    使用STM32驱动双通道12位DAC(TLV5618)
    CentOS 7挂载离线yum源
    有关于Git的使用的一点心得和说明
    STM32单片机学习心得——MDK使用技巧
    小米手机连接ADB
    我看操作系统的发展
    centos7下cups + samba共打印服务
    CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙步骤
    centos7 更新yum源
    CentOS7 安装Odoo9.0
  • 原文地址:https://www.cnblogs.com/fengshili666/p/14271358.html
Copyright © 2011-2022 走看看