• [Python_4] Python 面向对象(OOP)



    0. 说明

      Python 面向对象(OOP) 笔记、迭代磁盘文件、析构函数、内置方法、多重继承、异常处理

      参考

      Python面向对象


     1. 面向对象

    # -*-coding:utf-8-*-
    
    """
        OOP 面向对象编程
    """
    
    """
        1. pass 的使用, pass 是占位符
    """
    if True:
        pass
        print(10)
    
    
    def f1():
        pass
    
    
    """
        2. 定义类
    """
    
    
    class Emp:
        pass
    
    
    """
     3. 创建对象
    """
    e1 = Emp()
    print(e1.__class__)
    
    """
     4. 定义静态变量
    """
    
    
    class Car:
        brand = "BWM"  # 静态变量
        __color = "white"  # __开头是私有的
    
    
    print(Car.brand)
    
    
    # print(Car.__color)
    
    class Cat:
        """
        类方法,是通过类访问的静态方法
        类方法不需要实例化对象,通过类名直接进行调用,相当于java中的静态方法。
        但方法的首参必须是cls类型,表示当前的类
        """
        @classmethod
        def add(cls, a, b):
            return a + b
    
        """
        静态方法,不通过类访问,直接访问的方法
        python中的静态方法类似于scala中的函数,即可以直接访问的函数,
        不需要通过类名访问。首个参数也无需定义成cls。
        """
        @staticmethod
        def sub(a, b):
            return a - b
    
        """
        成员函数 通过对象调用的函数,函数首个参数需要使用 self 作为参数
        """
        def watch(self, a, b):
            print(a)
            print(b)
            print("xx")
    
    
    """
        构造函数
        构造函数名称固定,就是__init__方法
    """
    
    
    class Person:
        # 构造函数
        def __init__(self):
            print("创建了一个 Person 对象")
            self.name = "tom"
            self.age = 10
            # del self.name
    
    
    p1 = Person()
    print(p1.name)
    
    # 变量可以删除
    # va = 100
    # print(va)
    # del va
    # print(va)

    2. 迭代磁盘文件

    """
     n. 迭代磁盘文件
    """
    import os
    
    
    def allfiles(dir):
        print(dir, "gb2312")
        if os.path.isdir(dir):
            subdirs = os.listdir(dir)
            for sub in subdirs:
                allfiles(dir + "/" + sub)
    
    
    allfiles("F:/Archives/Books")

    3. 析构函数

      销毁对象时使用的函数 

    """
        析构函数
    """
    class Man:
    
        # 构造函数
        def __init__(self, name):
            print("创建 Man")
            self.name = name
    
        # 析构函数
        def __del__(self):
            pass
            print("销毁 Man")
    
    # m1 = Man("tomasss")
    # m2=m1
    # m1 = None

    4. 内置方法 

    """
        内置方法,操纵对象的属性
    """
    m1 = Man("xxxxxx")
    print(hasattr(m1, "age"))
    setattr(m1, "age", 12)
    delattr(m1, "age")
    print(getattr(m1, "age", -1))
    
    # 访问类的属性
    # __dict__访问类的成员
    r = Man.__dict__
    print(r)
    
    # 访问类名
    print(Man.__name__)
    
    # 所有父类构成的元组
    print(Man.__bases__)

    5. 多重继承 

    """
        考察多重继承,类可以有多个父类
    """
    class Horse:
        def __init__(self, name):
            self.name = name
    
    
    class Donkey:
        def __init__(self, age):
            self.age = age
    
    
    class Luozi(Horse, Donkey):
        def __init__(self, name, age, color):
            Horse.__init__(self, name)
            Donkey.__init__(self, age)
            self.color = color
    
    
    lz1 = Luozi("L1", 12, "black")
    print(lz1.name)

    6. 异常处理 

    """
        异常处理
    """
    try:
        print(1 / 0)
    except:
        print("0不能做除数")
    finally:
        print("over")
    
    try:
        print(1 / 0)
    finally:
        print("over")

  • 相关阅读:
    python os.path模块常用方法详解
    PHP脚本执行效率性能检测之WebGrind的使用
    Laravel操作上传文件的方法
    Nginx获取自定义头部header的值
    Laravel Nginx 除 `/` 外所有路由 404
    laravel查看执行的sql语句
    laravel 安装excel扩展
    mysql 按值排序
    处理laravel表单提交默认将空值转为null的问题
    设置虚拟机里的Centos7的IP
  • 原文地址:https://www.cnblogs.com/share23/p/9821997.html
Copyright © 2020-2023  润新知