调用实现为类的python代码

时间:2019-06-09 11:39:34

标签: python visual-studio-code ubuntu-18.04

我是python的新手,刚刚在Ubuntu 18.04上安装了vs代码,并运行了一些简单的python代码,例如

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 20, 100)  # Create a list of evenly-spaced numbers over the range
plt.plot(x, np.sin(x))       # Plot the sine of each x point
plt.show()                   # Display the plot

但是如何调用定义类的python代码段?

在这里,我获得了“最长回文子串”问题的解决方案,该问题已实现为类,但是没有类似于C ++的main()函数的入口点。我怎么称呼这个“最长回文子串”代码?

class LPS:
    """
    @param s: input string
    @return: the longest palindromic substring
    """
    def longestPalindrome(self, s):
        if not s:
            return ""

        n = len(s)
        is_palindrome = [[False] * n for _ in range(n)]

        for i in range(n):
            is_palindrome[i][i] = True
        for i in range(1, n):
            is_palindrome[i][i - 1] = True

        longest, start, end = 1, 0, 0
        for length in range(1, n):
            for i in range(n - length):
                j = i + length
                is_palindrome[i][j] = s[i] == s[j] and is_palindrome[i + 1][j - 1]
                if is_palindrome[i][j] and length + 1 > longest:
                    longest = length + 1
                    start, end = i, j

        return s[start:end + 1]

4 个答案:

答案 0 :(得分:4)

在课外(和课后!)打电话

LPS().longestPalindrome("someString")

请注意在LPS之后和.longestPalindrome之前的括号。这样,您可以创建类LPS的对象,从而可以调用其“非静态”方法(请参见longestPalindrome具有self作为参数)。

另一种方法是将其命名为

lps = LPS()
lps.longestPalindrome("someString")

或者,省略self参数,该参数在您的情况下是完全多余的,并调用为

LPS.longestPalindrome("someString")

注意: self类似于Java中的this

编辑:我看到一些答案在()之后省略了LPS,例如LPS.longestPalindrome(“someString”)。这是非常不卫生的Python,就像对字符文字使用””和对字符串使用’ ’一样,尽管两者都是正确的。

答案 1 :(得分:2)

通常在Java或C语言中,我们创建类的对象,并通过该对象访问该类的任何方法。

但是在Python中,您可以简单地使用类名,后跟点运算符,最后使用要访问的方法,例如

  

LPS.longestPalindrome(s)

以您的情况

答案 2 :(得分:2)

您只需按名称导入您的类,然后在另一个python脚本或类似的脚本中使用类方法

import LPS 
LPS.longestPalindrome(0, "Your String")

答案 3 :(得分:1)

您可以通过添加以下代码行来实现:

if __name__ == "__main__":
    # Creates object of your class
    lp = LPS()   
    # Calls the longesetPalindrome() with "prateek" as argument
    response=lp.longestPalindrome("prateek")
    # Prints the response which the function returns.
    print(response)

由于您是python的新手,如果您正在python中寻找类似c ++的'main()'之类的东西,则可以使用

如果__name__ ==“ __main __”:

它的工作原理几乎类似于main(),但是它不是一个函数。 基本上,每个Python模块都有其 name 定义,如果它是' main ',则表示该模块由用户独立运行,我们可以执行相应的适当操作。 if __name__ ==“ main”:仅在文件直接运行而不是导入的情况下才用于执行某些代码。