我想弄清楚如何让一个系统,我正在使用的UI项目的主题管理器,我正在努力正常工作。Python超级()和继承的类目录位置
例子:
文件结构:
element.py - class Element()
button.py - class Button(Element)
text.py - class Text(Element)
input/text.py - class Text(Element)
我使用类名在我的主题不同的属性。 (类似于CSS)
所以'元素'可以使文本颜色为白色。
目前,我有所有UI元素的“元素”继承和使用:
self.__class__.__name__.lower()
这是工作的“按钮”和“元素”,问题就来了成input.text VS文字游戏。文本用于显示文本的所有用途,因此它几乎在所有元素中使用,但input.text类也被命名为Text,用于Text Input,我希望使用像'input.text'这样的属性选择器而不是'text '我现在用class.name得到它。
我想在最后设置它,所以它有一个插件系统为他人添加元素,并能够使用目录结构作为属性选择器的一部分。
例如:
Button class: button
Text class: text
Text Input class: text, but in the directory 'input'
我试图找出如何让Python来检查,如果“自我”的元素从超()调用是在下面,其中“element.py”是一个目录。这会将目录名称添加到它检查的属性的类名称中。
最终结果将是:
element
button
text
input.text
TLDR:我需要知道如何检查,如果继承的类是在不同的目录的基类,什么该目录被调用。
感谢您对此进行任何帮助。
我不相信你想要做的事情很容易实现或一个好主意。我推荐(没有特定的顺序)1)将input/text.py中的类重命名为'InputText',2)根据文件路径和名称单独建立一个类名(这不是一个好主意,而是比使用类名和文件路径要好),或者3)默认为类名,但允许类通过在某处指定可选字段来覆盖名称。如果您希望获得某些帮助,请编辑您的问题。 – supersam654