Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python范围类/子类_Python_Subclass - Fatal编程技术网

Python范围类/子类

Python范围类/子类,python,subclass,Python,Subclass,我有如下Range类的代码: class Range: def __init__(self, start, end): self.setStart(start) self.setEnd(end) def getStart(self): return self.start def setStart(self, s): self.start = s def getEnd(self): return self.end

我有如下Range类的代码:

class Range:
   def __init__(self, start, end):
      self.setStart(start)
      self.setEnd(end)
   def getStart(self):
      return self.start
   def setStart(self, s):
      self.start = s
   def getEnd(self):
      return self.end
   def setEnd(self, e):
      self.end = e
   def getLength(self):
      return len(range(self.start, self.end))
   def overlaps(self, r):
      if (r.getStart() < self.getEnd() and r.getEnd() >= self.getEnd()) or \
         (self.getStart() < r.getEnd() and self.getEnd() >= r.getEnd()) or \
         (self.getStart() >= r.getStart() and self.getEnd() <= r.getEnd()) or \
         (r.getStart() >= self.getStart() and r.getEnd() <= self.getEnd()):
          return True
      else:
          return False

一般来说,如果您提供了特定的错误消息或出错的事情,那么回答问题就容易多了。下面是我尝试运行上述程序时发生的情况:

  • 首先:

    `SyntaxError: invalid syntax` 
    
    如果seq==正,则打开
    。这里怎么了?哦,是的,你在条件句后面缺了一个冒号。如果添加,则该文件至少可以解析。因此,让我们尝试进行一些编码:

    # Your code here, then:
    feature = DNAFeature()
    
  • 跑步可以带来:

    TypeError: __init__() takes exactly 3 positional arguments (1 given)
    
    哦,好的,我们需要将一些参数传递给
    DNAFeature
    的初始化器。让我们把它放在+串上,称之为foo:

    feature = DNAFeature(1, "foo")
    
  • 现在我们得到:

    AttributeError: 'DNAFeature' object has no attribute 'setStrand'
    
    那是怎么回事?好的,您还没有定义
    setStrand
    。(注意:您不必这样做。但稍后会有更多内容。)让我们来定义它:

    def setStrand(self, strand):
        self.strand = strand
    
我不想讨论代码的其余问题(提示:在使用变量之前需要定义变量),但这是您应该做的事情


对,不一样以上是错误的代码。我希望您已经编写了
系列
课程,并且没有将其作为课程的一部分提供,因为如果已经编写了,您将学习一门教得很差的课程。主要问题是getter和setter的使用——我猜您是Java出生和长大的?在Python中,您不需要为所有内容编写getter和setter,因为如果需要的话,您可以在以后添加它们。相反,只需使用类属性。查看
范围的以下代码:

class Range:
    def __init__(self, start, end):
        self.start = start
        self.end = end

    def length(self):
        return self.end - self.start

    def overlaps(self, other):
        return not(self.end < other.start or other.end < self.start)

看看你是否能解决这个问题。

一般来说,如果你提供了一条特定的错误信息或是出了问题,回答问题就会容易得多。下面是我尝试运行上述程序时发生的情况:

  • 首先:

    `SyntaxError: invalid syntax` 
    
    如果seq==正,则打开
    。这里怎么了?哦,是的,你在条件句后面缺了一个冒号。如果添加,则该文件至少可以解析。因此,让我们尝试进行一些编码:

    # Your code here, then:
    feature = DNAFeature()
    
  • 跑步可以带来:

    TypeError: __init__() takes exactly 3 positional arguments (1 given)
    
    哦,好的,我们需要将一些参数传递给
    DNAFeature
    的初始化器。让我们把它放在+串上,称之为foo:

    feature = DNAFeature(1, "foo")
    
  • 现在我们得到:

    AttributeError: 'DNAFeature' object has no attribute 'setStrand'
    
    那是怎么回事?好的,您还没有定义
    setStrand
    。(注意:您不必这样做。但稍后会有更多内容。)让我们来定义它:

    def setStrand(self, strand):
        self.strand = strand
    
我不想讨论代码的其余问题(提示:在使用变量之前需要定义变量),但这是您应该做的事情


对,不一样以上是错误的代码。我希望您已经编写了
系列
课程,并且没有将其作为课程的一部分提供,因为如果已经编写了,您将学习一门教得很差的课程。主要问题是getter和setter的使用——我猜您是Java出生和长大的?在Python中,您不需要为所有内容编写getter和setter,因为如果需要的话,您可以在以后添加它们。相反,只需使用类属性。查看
范围的以下代码:

class Range:
    def __init__(self, start, end):
        self.start = start
        self.end = end

    def length(self):
        return self.end - self.start

    def overlaps(self, other):
        return not(self.end < other.start or other.end < self.start)
看看你是否能找到它的工作原理。

在最一般的情况下(不做任何假设),这似乎就是你需要的:

class DNAFeature(Range):

    def __init__(self, start, end):
        self.setStart(start)
        self.setEnd(end)
        self.strand = None
        self.sequencename = None

    def setStrand(self, s):
        self.strand = s

    def getStrand(self):
        if self.sequenceName == 'plus':
            return 1
        elif self.sequenceName == 'minus':
            return -1
        else:
            return 0

    def setSequenceName(self, s):
        self.sequencename = s

    def getSequenceName(self, s):
        return self.sequenceName
您会注意到,在这里,我重新定义了init。这是有原因的。我记得在前面的一个问题中,您提到这是一个Java赋值,刚刚重命名为python。在Java中,构造函数不是继承的(如果我错了,请纠正我)。因此,如果使用相同的评分标准,您将因未在此处重新定义构造函数而失去分数

希望这有助于

在最一般的情况下(不做任何假设),这似乎是您所需要的:

class DNAFeature(Range):

    def __init__(self, start, end):
        self.setStart(start)
        self.setEnd(end)
        self.strand = None
        self.sequencename = None

    def setStrand(self, s):
        self.strand = s

    def getStrand(self):
        if self.sequenceName == 'plus':
            return 1
        elif self.sequenceName == 'minus':
            return -1
        else:
            return 0

    def setSequenceName(self, s):
        self.sequencename = s

    def getSequenceName(self, s):
        return self.sequenceName
您会注意到,在这里,我重新定义了init。这是有原因的。我记得在前面的一个问题中,您提到这是一个Java赋值,刚刚重命名为python。在Java中,构造函数不是继承的(如果我错了,请纠正我)。因此,如果使用相同的评分标准,您将因未在此处重新定义构造函数而失去分数


希望这有帮助

你说它“看起来”不对是什么意思?你开过吗?您是否收到任何错误消息?你不希望它表现出什么样的行为?想必,你是在上编程课而不是艺术课。摆脱那些能手和能手。Python不是Java。即使您需要在
某些_range.end=…
中添加一些真正的逻辑,您也可以通过属性来添加,而不破坏任何代码。@Aaron:我导入了它,但由于seq==POSITIVE的代码不正确,所以无法导入,我只是不知道如何将getStrand设置为response,因为功能串是正数,它返回1,当特征串为负数时,它返回-1,在没有任何设置的情况下,返回为0。Thanks@pmt0512在函数
getStrand
中,在哪里定义了
seq
?此外,代码的复数形式是代码而不是代码。代码是一个“集体名词”。你怎么能有两个密码?这和拥有两套家具一样有意义。你会说‘两件家具’,就像你说的‘两件代码’。@AaronMcSmooth:除非你要输入几个代码来解锁保险箱——但我也假设他在上编程课,而不是英语课。你说‘看起来’不对是什么意思?你开过吗?您是否收到任何错误消息?你不希望它表现出什么样的行为?想必,你是在上编程课而不是艺术课。摆脱那些能手和能手。Python不是Java。即使您需要在
某些_range.end=…
中添加一些真正的逻辑,您也可以通过属性来添加,而不破坏任何代码。@Aaron:我导入了它,但由于seq==POSITIVE的代码不正确,所以无法导入,我只是不知道如何将getStrand设置为response,因为功能串是正数,它返回1,当特征串为负数时,它返回-1,w