Python - 将 class 属性分配给变量
Python - Assign class attribute to a variable
我正在做一个类似app的词典,根据翻译开关,屏幕显示翻译或原文
代码如下所示:
PS: "textFunction(text)" 只是一个在屏幕上显示文本的函数。
PS: "wordList" 是 Word Class 个实例的列表
class Word:
def __init__(self, original, translation):
self.original = original
self.translation = translation
translation = False
if translation == False:
wordDisplayed = .original
elif translation == True:
wordDisplayed = .translation
textFunction(wordList[X].wordDisplayed)
但是,这不起作用。我该如何解决这个问题?
你会使用 getattr
:
wordDisplayed = "translation" if translation else "original"
textFunction(getattr(wordList[X], wordDisplayed))
虽然“getattr”是一个可能的解决方案,但我想说向您的 class 添加一个 get
函数可以使这一切更具可读性和可维护性:
class Word:
def __init__(self, original, translation):
self.original = original
self.translation = translation
def get(self, translation):
return self.translation if translation else self.original
words = [Word("hello", "hallo"), Word("world", "Welt")]
for w in words:
print(w.get(False), w.get(True))
输出:
hello hallo
world Welt
我正在做一个类似app的词典,根据翻译开关,屏幕显示翻译或原文 代码如下所示:
PS: "textFunction(text)" 只是一个在屏幕上显示文本的函数。 PS: "wordList" 是 Word Class 个实例的列表
class Word:
def __init__(self, original, translation):
self.original = original
self.translation = translation
translation = False
if translation == False:
wordDisplayed = .original
elif translation == True:
wordDisplayed = .translation
textFunction(wordList[X].wordDisplayed)
但是,这不起作用。我该如何解决这个问题?
你会使用 getattr
:
wordDisplayed = "translation" if translation else "original"
textFunction(getattr(wordList[X], wordDisplayed))
虽然“getattr”是一个可能的解决方案,但我想说向您的 class 添加一个 get
函数可以使这一切更具可读性和可维护性:
class Word:
def __init__(self, original, translation):
self.original = original
self.translation = translation
def get(self, translation):
return self.translation if translation else self.original
words = [Word("hello", "hallo"), Word("world", "Welt")]
for w in words:
print(w.get(False), w.get(True))
输出:
hello hallo
world Welt