我想在python中学习更多有关OO的知识,但我不太明白为什么是我的错误:
这(功能方法按预期工作)
def code_func(text, a, b):
l1 = a + b
l2 = b + a
tabela = dict((l1[x],l2[x]) for x in range(len(l1)))
textb = ""
for i in range(len(text)):
textb += text[i] if str(text[i]) not in tabela else tabela[str(text[i])]
return textb
但是,以下方法不会: 注意 - >我知道有一种方法可以调用另一种方法,但我正在尝试这只是为了理解更好的OO概念。 它确实将文本拆分为行,结果与前者不同。
class Cipher:
def __init__(self, l1, l2, text):
self.l1 = l1
self.l2 = l2
self.text = text
def code(self):
l1 = self.l1 + self.l2
l2 = self.l2 + self.l1
tabela = dict((l1[x],l2[x]) for x in range(len(l1)))
textb = ""
for i in range(len(self.text)):
textb += self.text[i] if str(self.text[i]) not in tabela else \
tabela[str(self.text[i])]
return textb
def encode(self):
return self.code()
输入中的输出样本以显示正在发生的事情:
输入:code_func("criptografia","zenitpolar","polarzenit")
输出:"ctazregtifai"
OOP:
输入:
crypto = Chiper("criptografia", "zenitpolar", "polarzenit")
crypto.encode()
输出:
"c
aerng
tfat"
答案 0 :(得分:1)
在第一种方法中,您传递参数
code_func("criptografia","zenitpolar","polarzenit")
根据您的功能定义:
def code_func(text, a, b):
#text = "criptografia"
#a = "zenitpolar"
#b = "polarzenit"
而在第二种方法中,您将以相同的顺序传递参数:
crypto = Chiper("criptografia", "zenitpolar", "polarzenit")
但__init__
函数以不同的顺序接受参数:
def __init__(self, l1, l2, text):
#l1 = "criptografia"
#l2 = "zenitpolar"
#text = "polarzenit"
这就是输出不同的原因。像这样调用你的函数:
crypto = Chiper("zenitpolar", "polarzenit", "criptografia")