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.namep1 = Person()print(p1.name)# 变量可以删除# va = 100# print(va)# del va# print(va)
2. 迭代磁盘文件
""" n. 迭代磁盘文件"""import osdef 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 = nameclass Donkey: def __init__(self, age): self.age = ageclass Luozi(Horse, Donkey): def __init__(self, name, age, color): Horse.__init__(self, name) Donkey.__init__(self, age) self.color = colorlz1 = 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")