def print_info(self, logging): logging.info('n_users: %d' % self.n_users) logging.info('n_items: %d' % self.n_items) logging.info('n_entities: %d' % self.n_entities) logging.info('n_users_entities: %d' % self.n_users_entities) logging.info('n_relations: %d' % self.n_relations) logging.info('n_h_list: %d' % len(self.h_list)) logging.info('n_t_list: %d' % len(self.t_list)) logging.info('n_r_list: %d' % len(self.r_list)) logging.info('n_cf_train: %d' % self.n_cf_train) logging.info('n_cf_test: %d' % self.n_cf_test) logging.info('n_kg_train: %d' % self.n_kg_train)
时间: 2024-03-28 17:38:53 浏览: 14
这段代码定义了一个方法 print_info,接受一个 logging 参数。该方法用于输出一个 Knowledge Graph 的基本信息,包括节点数、边数、关系数等等。
具体来说,该方法输出了以下信息:
- n_users: 表示用户的数量
- n_items: 表示物品的数量
- n_entities: 表示实体的数量,包括用户和物品
- n_users_entities: 表示用户和实体的总数量
- n_relations: 表示关系的数量
- n_h_list: 表示头实体的数量
- n_t_list: 表示尾实体的数量
- n_r_list: 表示关系的数量
- n_cf_train: 表示用于 Collaborative Filtering 的训练集大小
- n_cf_test: 表示用于 Collaborative Filtering 的测试集大小
- n_kg_train: 表示用于 Knowledge Graph Embedding 的训练集大小
其中,self.h_list、self.t_list 和 self.r_list 是在该类的构造函数中生成的,分别表示头实体列表、尾实体列表和关系列表。其他的属性值也是在构造函数中计算出来的。
相关问题
优化代码: import logging class DAELogControl(): def __init__(self, path): self.path = path self.logger = logging.getLogger(__name__) self.consoleFormatter = logging.Formatter("[%(asctime)s] %(levelname)s (%(filename)s:%(lineno)d): %(message)30s...") # self.consoleFormatter = logging.Formatter("%(levelname)s [%(asctime)s] (%(filename)s:%(lineno)d): %(message)30s...") self.fileFormatter = logging.Formatter("[%(asctime)s] %(levelname)s (%(filename)s:%(lineno)d): %(message)s") # self.fileFormatter = logging.Formatter("%(levelname)s [%(asctime)s] (%(filename)s:%(lineno)d): %(message)s") self.logger.propagate = False self.logger.setLevel(logging.DEBUG) self.consoleHandler = logging.StreamHandler() self.consoleHandler.setFormatter(self.consoleFormatter) self.consoleHandler.setLevel(logging.INFO) self.logger.addHandler(self.consoleHandler) self.fileHandler = logging.FileHandler(self.path) self.fileHandler.setFormatter(self.fileFormatter) self.fileHandler.setLevel(logging.DEBUG) self.logger.addHandler(self.fileHandler) def dae_data_err(self, msg): self.logger.debug(msg, stacklevel=2) def dae_info(self, msg): self.logger.info(msg, stacklevel=2) def dae_error(self, msg): self.logger.error(msg, stacklevel=2)
可以通过以下几个方面来优化代码:
1. 代码格式化:对代码进行格式化,使其更具可读性,例如在类定义的左括号前添加空格,代码缩进等。
2. 使用默认参数:将默认参数添加到函数参数中,以避免重复代码。例如,将默认的日志格式添加到日志处理程序中。
3. 删除重复代码:删除重复代码,例如在日志处理程序中使用了相同的格式化器。
4. 使用更具描述性的命名:使用更具描述性的变量和函数名称可以使代码更易于理解和维护。
下面是优化后的代码:
```python
import logging
class DAELogControl:
def __init__(self, path):
self.path = path
self.logger = logging.getLogger(__name__)
self.logger.propagate = False
self.logger.setLevel(logging.DEBUG)
self.consoleHandler = logging.StreamHandler()
self.consoleHandler.setLevel(logging.INFO)
self.consoleHandler.setFormatter(logging.Formatter("[%(asctime)s] %(levelname)s (%(filename)s:%(lineno)d): %(message)30s..."))
self.logger.addHandler(self.consoleHandler)
self.fileHandler = logging.FileHandler(self.path)
self.fileHandler.setLevel(logging.DEBUG)
self.fileHandler.setFormatter(logging.Formatter("[%(asctime)s] %(levelname)s (%(filename)s:%(lineno)d): %(message)s"))
self.logger.addHandler(self.fileHandler)
def dae_data_err(self, msg):
self.logger.debug(msg, stacklevel=2)
def dae_info(self, msg):
self.logger.info(msg, stacklevel=2)
def dae_error(self, msg):
self.logger.error(msg, stacklevel=2)
```
通过这些优化,代码变得更加简洁和易于理解。
import pytest import allure import logging from utils.mysql_database_connection_utils import MysqlDBUtil class TestChaxun(): def mysql_connect(self): self.conn = MysqlDBUtil # def teardown_class(self): # self.conn.sql_close def test_chaxun(self): data=self.conn.query("SELECT * from stu WHERE name = '张三' ") print(data)
根据你的代码,我猜测你正在使用 pytest 和 allure 进行测试,并且你的测试代码中包含一个 TestChaxun 类,其中有一个名为 test_chaxun 的方法。这个方法中调用了一个叫做 mysql_connect 的方法,来连接 MySQL 数据库,并使用 MysqlDBUtil 类来进行数据库操作。在 test_chaxun 中,你使用了 query 方法来执行一个 SQL 查询,返回了符合条件的所有记录,并将结果打印出来。
不过,你的代码中有一个问题,就是在 mysql_connect 方法中,你没有实例化 MysqlDBUtil 类,而是直接将类名作为参数传递给了 conn 变量。你需要将这个变量赋值为 MysqlDBUtil 的实例,才能正确地连接数据库并进行操作。