[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")

 


 

posted @ 2018-10-20 16:28  山间一棵松  阅读(171)  评论(0编辑  收藏  举报