gpt4 book ai didi

python - Python 中的 SOLID

转载 作者:行者123 更新时间:2023-12-01 00:41:39 25 4
gpt4 key购买 nike

很抱歉,如果我的问题不好或错误,但我想知道。

class MyCustomException(KeyError):
def __init__(self, *args):
super().__init__(*args)


def method(d):
return d['name']

try:
d = {"value": 1}
method(d)
except MyCustomException:
print('got it')

啊啊它不起作用!我无法捕获异常。这种行为是否违反了 SOLID 原则、里氏替换原则?

最佳答案

您需要显式抛出自定义异常。

class MyCustomException(KeyError):
pass

def method(d):
if not 'name' in d:
raise MyCustomException('name not found!')
else:
return d['name']

try:
d = {"value": 1}
method(d)
except MyCustomException:
print('got it')

里氏替换本质上意味着:如果我有一个类,并且我对它进行了子类化,那么如果用作父类(super class),那么该子类应该能够以与父类(super class)完全相同的方式工作。

换句话说,我创建了一个可以接受白面包和小麦面包的类Baker。如果我将 Baker 子类化为仅接受白面包的 ArtisanBaker 类,那么我现在就破坏了里氏替换。我不能再简单地将 ArtisanBaker 用作 Baker

关于python - Python 中的 SOLID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57298443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com