我是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]
答案 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”:仅在文件直接运行而不是导入的情况下才用于执行某些代码。