Python中的成员变量?
我正在尝试创建一个控制台输入程序,用户可以在其中向文件添加HTML 所以如果你按B(粗体) 然后你的输入是“测试” 它会将“测试”放入文件中 问题是,实际上只有一个函数“SaveToFile”应该将其保存到文件中,在调用该函数之前,我希望以某种方式保持输出排队,以便稍后写入文件,或者清除而不是放入文件中 我知道java和C#,所以我的想法是使用某种类型的成员变量 只需将这些行连接起来:Python中的成员变量?,python,variables,concatenation,member,Python,Variables,Concatenation,Member,我正在尝试创建一个控制台输入程序,用户可以在其中向文件添加HTML 所以如果你按B(粗体) 然后你的输入是“测试” 它会将“测试”放入文件中 问题是,实际上只有一个函数“SaveToFile”应该将其保存到文件中,在调用该函数之前,我希望以某种方式保持输出排队,以便稍后写入文件,或者清除而不是放入文件中 我知道java和C#,所以我的想法是使用某种类型的成员变量 只需将这些行连接起来: mOutput += ("<B>"+userinput+"<B/>); mOu
mOutput += ("<B>"+userinput+"<B/>);
mOutput+=(“+userinput+”);
你知道我将如何在python中实现类似的功能吗?与在其他语言中的实现方式基本相同。区别在于:
- 在Python方法中,始终必须引用成员变量(通常称为实例属性)通过指定它所附加到的对象,即使它是您自己的实例。这是通过Python自动将对您实例的引用作为第一个参数传递给您的方法来实现的,该方法按惯例命名为
。因此,您可能会编写self
,而不是self.output
(不需要匈牙利语,因为mOutput
表明它是一个成员变量)self
- 要用于此操作的容器是
。您可以调用列表的列表
方法向其中添加项。列表还支持append
,但这需要一个序列,而不是单个项。更糟糕的是,字符串被视为字符序列,因此使用+=
将字符串追加到列表中会将n字符串的单个字符作为单独的项!您可以通过编写例如+=
来将第二个参数设置为一个序列,但这会迫使Python构建第二个列表,但没有充分的理由container+=[item\u to\u add]
- 实例属性必须在实例化时显式初始化。如果在类上定义属性,例如在类定义中写入
,则该属性在类的所有实例之间共享(除非实例通过提供同名属性来覆盖该属性)。相反,在output=[]
方法中编写\uuuu init\uuuu
self.output=[]
- 您可以使用字符串的
方法将序列连接在一起。指定的字符串是连接元素之间的分隔符。(这与大多数语言相反,但过一段时间后才有意义。)join
class MyObject(object):
def __init__(self):
self.output = [] # empty list
def bold(self, userinput):
self.output.append("<B>" + userinput + "</B>")
def save(self, filename):
with open(filename, "w") as outfile:
# write items separated by line breaks
outfile.write("\n".join(self.output))
类MyObject(对象):
定义初始化(自):
self.output=[]#空列表
def bold(自我、用户输入):
self.output.append(“+userinput+”)
def保存(自我,文件名):
打开(文件名为“w”)作为输出文件:
#写以换行符分隔的项目
outfile.write(“\n”.join(self.output))
或者类似的东西。(讽刺提醒)您可以尝试搜索非常有用的内容。我知道您的保存功能正在输出到文件,并使用为列表中的每个元素创建新行的方式,但我想问一下“w”是什么意思?“w”表示“写入模式”。如果指定的文件不存在,则将创建该文件;如果确实存在,则将清空该文件。例如,请参阅或在Python中,
help(open)
。