0. Pipvenv虛擬環(huán)境
- 安裝pipenv
pip install pipenv
- 查看本地python的版本
where python
3.進入到項目文件夾,使用指定版本的python創(chuàng)建虛擬環(huán)境
pipenv shell --python C:\Python312\python.exe
- 該文件夾執(zhí)行
pip list,可以看出來他是一個純凈的環(huán)境

image.png
5.安裝dbt
pipenv install dbt-snowflake
1.魔法方法
1.1__getitem__允許類有索引訪問方式,自定義自己的字典
索引和賦值方法,用于支持對象的索引和賦值操作。
class MyDict:
def __init__(self):
self.data = {}
def __getitem__(self, key):
return self.data[key]
def __setitem__(self, key, value):
self.data[key] = value
my_dict = MyDict()
my_dict['key'] = 'value'
print(my_dict['key']) # 輸出: value
2. OOP
2.1 依賴反轉(zhuǎn)
- 概念:設(shè)計面向?qū)ο蟮臅r候,高層的模塊不應(yīng)該是依賴低層模塊, 兩者都應(yīng)該依賴于抽象,意思是:不管是設(shè)計這個類,還是去具體實現(xiàn)這個類的時候,都應(yīng)該設(shè)計成為抽象的類。
- 實際流程:(1)設(shè)計一個日志接口的抽象類;(2)設(shè)計一個文件日志和數(shù)據(jù)庫日志類,繼承①的抽象類;(3)創(chuàng)建一個專門用來使用②日志的類,供用戶使用(依賴反轉(zhuǎn)體現(xiàn));
- 設(shè)計抽象的日志元類
class Logger(ABC):
@abstractmethod
def log(self, message):
pass
@abstractmethod
def set_log_level(self, level):
pass
@abstractmethod
def clear_log(self):
pass
- 設(shè)計具體的日志記錄器,文件日志記錄和數(shù)據(jù)庫日志記錄器等
class FileLogger(Logger):
def __init__(self):
self.log_level = 'INFO' # 默認日志級別為 INFO
def log(self, message):
with open('logfile.txt', 'a') as f:
f.write(message + '\n')
def set_log_level(self, level):
self.log_level = level
def clear_log(self):
open('logfile.txt', 'w').close() # 清空日志文件
class DatabaseLogger(Logger):
def log(self, message):
# 實現(xiàn)將日志消息寫入數(shù)據(jù)庫的邏輯
pass
- 設(shè)計負責(zé)使用日志記錄器的文件
class LogManager:
def __init__(self, logger):
self.logger = logger
def do_something_and_log(self, action): #傳入的是類
# 做一些操作
result = action()
self.logger.log('Action done: ' + result)
def set_log_level(self, level):
self.logger.set_log_level(level)
def clear_log(self):
self.logger.clear_log()
- 使用LogManager實現(xiàn)具體功能,而不是直接使用log類
file_logger = FileLogger()
log_manager = LogManager(file_logger)
log_manager.set_log_level('DEBUG') # 設(shè)置日志級別為 DEBUG
log_manager.do_something_and_log(lambda: 'Result')
log_manager.clear_log() # 清除日志