【发布时间】:2014-07-08 21:43:28
【问题描述】:
您好,我在学了 1 年 java 后开始使用 Python,在学完 java 之后这是一个非常艰难的时刻,因为在 python 中,OO 方面的一切都是不同的,我在 Java 之前做了 2 年 PHP,所以 PHP 和 Python OO 方面都很不错类似。
到目前为止,我有这个脚本,这两个类:
import random
class Questions(object):
questions = [Questions.Question("Is Jony mad?", False),
Questions.Question("Is Jony happy?", True)]
currentQuestion = None;
def __init__(self):
pass
def generateQuestion(self):
self.currentQuestion = self.questions[random.randint(0, len(self.questions))]
def answerQuestion(self, answer):
if (answer == self.questions[0].
class Question:
question = None
answer = None
def __init__(self, question, answer):
self.question = question
self.answer = answer
def getQuestion(self):
return self.question
def getAnswer(self):
return self.answer
它们位于一个名为 Questions 的文件中。
我有数组问题,应该包含Questions.Question(Question 类)的对象。
一切都很好,直到我在方法answerQuestion 中到达这一行
def answerQuestion(self, answer):
if (answer == self.questions[0].
当我做self.questions[0]. PyDev 没有给出该对象包含什么方法的建议,但是当我做self.currentQuestion. 我得到建议,但不是来自 Question 类,而是我得到数组的方法,例如 @987654329 @、remove(index)等
我认为发生这种情况是因为 Eclipse PyDev 不知道 questions 数组是什么类型。
在 PHPStorm IDE 中,我通常使用 /** @var Object **/,但我是 Python 新手,我不太确定那里的工作原理。
我做错了什么吗?
【问题讨论】:
-
Python 语言过于动态,无法对列表中包含的内容做出假设。作为开发人员,您可能打算在该列表中仅包含
Question对象,但 PyDev 无法做出这样的假设。