繁体   English   中英

谁能解释 OOP 的概念并更正此代码

[英]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只是给第一个参数的常规名称,但名称可以是任何东西,例如selfthisbananaresult

因为您的decryptor()方法中没有self参数,所以 Python 解释器将尝试将您提供的参数( result )解释为self参数,这意味着它希望它是类型Encrypt ,但它不是,因此错误。

附带说明一下,在面向对象的程序中,class 的名称应该是名词,方法名称应该是动词——因此在您的程序中,您将拥有一个名为“Encryptor”的 class 和名为“encrypt”的方法和“解密”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM