[英]Can anybody explain concepts of OOP and correct this code
所以我在 python 中编写这个非常简单的加密器和解密器。我理解它的程序方式,但我想制作一个 class。 这是代码
class Encrypt():
def __init__(self,scentence):
self.scentence = scentence
def encryptor(self):
result = []
for letter in self.scentence:
l = ord(letter)+20
result.append(l)
for numbers in result:
print(numbers,end = '')
print(" " , end = '')
print(result)
def decryptor(result):
print(result)
end_string = ""
for j in result:
l = int(j)
l = l-20
l = chr(l)
end_string = end_string + l
print("The decrypted message is below:")
print(end_string)
f = Encrypt("helloe")
f.encryptor()
f.decryptor()
因此,当我运行此代码时,会出现如下错误
对于 j 结果:TypeError: 'Encrypt' object is not iterable
有人解释SELF和OBJECT和CLASS的概念会很有帮助
In Python, the first parameter for class methods is always self
(whereas in other object-oriented languages like C++ and Java this parameter is implicit). 有关原因的解释,请参阅https://stackoverflow.com/a/2709832/4454124 。 ( self
只是给第一个参数的常规名称,但名称可以是任何东西,例如self
、 this
、 banana
或result
)
因为您的decryptor()
方法中没有self
参数,所以 Python 解释器将尝试将您提供的参数( result
)解释为self
参数,这意味着它希望它是类型Encrypt
,但它不是,因此错误。
附带说明一下,在面向对象的程序中,class 的名称应该是名词,方法名称应该是动词——因此在您的程序中,您将拥有一个名为“Encryptor”的 class 和名为“encrypt”的方法和“解密”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.