gpt4 book ai didi

python - 降低面向对象的python代码的圈复杂度

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:21 26 4
gpt4 key购买 nike

我正在尝试降低代码的循环复杂度,因为根据 pylama我的定义“太复杂”并建议 solution包括使用字典映射调用函数。

所以我在我的面向对象代码上尝试了它,但惨遭失败。

class trial:
def __init__(self):
self.a = 'a'
self.b = 'b'

def a(self):
return self.a

def b(self):
return self.b

def select_one(self, option):
map_func = {
1 : self.a,
2 : self.b
}
return map_func[option]()

t = trial()
print(t.select_one(1))

如果这不可能,还有哪些其他可能的解决方案可以降低圈复杂度。

最佳答案

首先,字典应该在 __init__ 中定义,否则每次输入 select_one 函数(字典每次都构建,这使得您链接中的示例错误)

其次,您的方法与您的属性同名。改变它:

class trial:
def __init__(self):
self.a = 'a'
self.b = 'b'
self.map_func = {
1 : self.f_a,
2 : self.f_b
}

def f_a(self):
return self.a

def f_b(self):
return self.b

def select_one(self, option):
return self.map_func[option]()

t = trial()
print(t.select_one(1))

关于python - 降低面向对象的python代码的圈复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53307984/

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