gpt4 book ai didi

python - 为继承类设置常量参数的最佳实践

转载 作者:太空宇宙 更新时间:2023-11-04 05:04:35 24 4
gpt4 key购买 nike

我有一个类 GUI 定义如下:

table_color = "red"

class GUI:
def __init__(self):
self.draw_table()

def draw_table(self):
print "table color: ", table_color

我想定义一个基于 GUI 的子类 GUI_child:

table_color = "blue"

class GUI_child(GUI):
def __init__(self):
GUI.__init__(self)

但是上面的 GUI_child 不起作用并打印“红色”。我有一堆像 table_color 这样的变量,它们只在初始化时使用一次。我知道我可以将table_color定义为类变量,或者在GUI_child中再次定义draw_table(),但感觉这些可能不是最好的选项。

(编辑:由于这些变量只使用一次而且我不打算更改或访问它们,将它们设置为类变量似乎是多余的。如果我重新定义 draw_table() 它将只是复制粘贴,在我看来这也不是一个好的做法。)

这种用法的最佳做法是什么?

最佳答案

将定义 table_color = "red" 移动到 class GUI 定义的最开头,并在 self.table_color 中引用它类的方法。将其移动到类中使其成为将由派生类继承的类属性。

但是,您可以通过在子类定义中重新定义它(以相同的方式)来覆盖它在子类中的值,以覆盖父类中否则将被继承的值。

我的意思是:

class GUI:
table_color = "red"

def __init__(self):
self.draw_table()

def draw_table(self):
print("table color: {}".format(self.table_color))

class GUI_child(GUI):
table_color = "blue"

def __init__(self):
super(GUI_child, self).__init__()

gui = GUI() # -> table color: red
gui_child = GUI_child() # -> table color: blue

请注意,根据 PEP 8 - Style Guide for Python Code , 常量应该全部大写。这意味着 table_color 应该更改为 TABLE_COLOR

关于python - 为继承类设置常量参数的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44850680/

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