0. 说明
Python 面向对象(OOP) 笔记、迭代磁盘文件、析构函数、内置方法、多重继承、异常处理
参考
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")