beichen123

面向对象初识

1.函数式编程 对 面向过程编程的两个特点

  1. 减少代码的重复性
  2. 增强代码的可读性

2.面向对象编程 对 面向过程编程

2.1 什么是面向对象

​ 面向对象的程序设计的核心是对象(上帝式思维),要理解对象为何物,必须把自己当成上帝,上帝眼里世间存在的万物皆为对象,不存在的也可以创造出来。

2.2 什么是类,什么是对象

​ 类:就是具有相同属性和功能的一类事物。

​ 对象:就是类的具体表现。

3.类的结构

class Human:
    """
    此类主要是构建人类
    """
    mind = \'有思想\'  # 第一部分:静态属性 属性 静态变量 静态字段
    dic = {}
    l1 = []
    def work(self): # 第二部分:方法 函数 动态属性
        print(\'人类会工作\')
class 是关键字与def用法相同,定义一个类。
Human是此类的类名,类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头。
类的结构从大方向来说就分为两部分:
静态变量。
动态方法。

从类名的角度研究类

class Human:
    """
    类的具体结构
    """
    # 第一部分:静态属性
    mind = \'有思想\'   # 类的属性  (静态属性, 静态字段)
    language = \'使用语言\'
    # 第二部分: 动态方法
    def work(self):
        print(\'人类都会工作\')
    def eat(self):
        print(\'人类都需要吃饭\')
1. 类名操作类中的属性
    1. 类名查看类中所有的内容
print(Human.__dict__)
    2. 类名操作类中的静态属性  万能的点.

增:
Human.body = \'有头和四肢\'
删:
del Human.mind
改:
Human.mind = \'liye脑残\'
查:
print(Human.language)
print(Human.__dict__)

2. 类名调用类中的方法(一般类中的(静态方法,类方法)方法不会通过类名调用)
Human.work(111)

总结:
一般类名就是操作类中的属性.

从对象角度研究类

class Human:
    """
    类的具体结构
    """
    # 第一部分:静态属性
    mind = \'有思想\'   # 类的属性  (静态属性, 静态字段)
    language = \'使用语言\'
    def __init__(self):
        # print(f\'self---->: {self}\')
        # print(666)
        self.name = \'李业\'
        self.age = 18

    # 第二部分: 动态方法
    def work(self):
        print(\'人类都会工作\')

    def eat(self):
        print(\'人类都需要吃饭\')

obj = Human()  # 实例化过程
得到一个返回值,这个返回值就是 对象,实例.
print(f\'obj---> {obj}\')
实例化一个对象发生了三件事:
\'\'\'
    1. 开辟一个对象空间.
    2. 自动执行__init__方法,并且将对象地址传给self.
    3. 运行__init__方法内的代码,给对象空间封装属性.

\'\'\'


class Human:
    """
    类的具体结构
    """
    # 第一部分:静态属性
    mind = \'有思想\'   # 类的属性  (静态属性, 静态字段)
    language = \'使用语言\'

    def __init__(self, name, age):
        # print(f\'self---->: {self}\')
        # print(666)
        self.n = name
        self.a = age


    # 第二部分: 动态方法
    def work(self):
        # print(f\'self---> {self}\')
        print(f\'{self.n}都会工作\')


    def eat(self):
        print(f\'{self.n}都需要吃饭\')

obj = Human(\'李业\',18)  # 实例化过程
print(obj.n)
print(obj.a)
print(obj.__dict__)

对象操作对象空间的属性

1. 对象查看对象的空间的所有属性

obj = Human(\'李业\',18)
print(obj.__dict__)

2. 对象操作对象空间的属性

obj = Human(\'李业\',18)
增:
obj.sex = \'laddy_boy\'
删:
del obj.a
改:
obj.a = 1000
查:
print(obj.n)
print(obj.__dict__)

对象查看类中的属性

obj = Human(\'李业\',18)
# print(obj.mind)
obj.mind = \'无脑的\'
print(obj.mind)
print(Human.mind)

对象调用类中的方法

obj = Human(\'孙戴维\', 23)
# print(f\'obj---> {obj}\')
obj.work()
obj.eat()

一个类可以实例化多个对象

obj1 = Human(\'李业\',18)
obj2 = Human(\'小可爱\', 16)
obj3 = Human(\'怼姐\', 18)

变量,函数名:
age_of_oldboy = 73
Ageofoldboy

logging旗舰版使用

import logging.config
# 定义三种日志输出格式 开始

standard_format = \'[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d][%(levelname)s][%(message)s]\' #其中name为getlogger指定的名字

simple_format = \'在 %(asctime)s %(message)s\'

id_simple_format = \'[%(levelname)s][%(asctime)s] %(message)s\'


# log文件的全路径
logfile_path = \'all2.log\'

# log配置字典
LOGGING_DIC = {
    \'version\': 1,
    \'disable_existing_loggers\': False,
    \'formatters\': {
        \'standard\': {
            \'format\': standard_format
        },
        \'simple\': {
            \'format\': simple_format
        },
    },
    \'filters\': {},
    \'handlers\': {
        #打印到终端的日志
        \'stream\': {
            \'level\': \'DEBUG\',
            \'class\': \'logging.StreamHandler\',  # 打印到屏幕
            \'formatter\': \'simple\'
        },
        #打印到文件的日志,收集info及以上的日志
        \'file\': {
            \'level\': \'DEBUG\',
            \'class\': \'logging.handlers.RotatingFileHandler\',  # 保存到文件
            \'formatter\': \'standard\',
            \'filename\': None,  # 日志文件
            \'maxBytes\': 1024*1024*1024,  # 日志大小 5M
            \'backupCount\': 5,
            \'encoding\': \'utf-8\',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    \'loggers\': {
        #logging.getLogger(__name__)拿到的logger配置
        \'\': {
            \'handlers\': [\'stream\', \'file\'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            \'level\': \'DEBUG\',
            \'propagate\': True,  # 向上(更高level的logger)传递
        },
    },
}


def get_logger():
    path = r\'F:\s24\day21\liye.log\'
    LOGGING_DIC[\'handlers\'][\'file\'][\'filename\'] = path
    logging.config.dictConfig(LOGGING_DIC)  # 导入上面定义的logging配置
    logger = logging.getLogger(__name__)  # 生成一个log实例
    return logger



def save():
    logger = get_logger()
    logger.info(f\'{} 存入300元\')  # 记录该文件的运行状态

save()

分类:

技术点:

相关文章:

  • 2018-12-20
  • 2021-11-06
  • 2021-06-03
猜你喜欢
  • 2019-08-02
  • 2019-01-25
  • 2019-08-02
  • 2021-04-02
  • 2021-10-29
相关资源
相似解决方案