【问题标题】:Accessing a method from an inheritance class at the main从主继承类访问方法
【发布时间】:2018-08-19 14:50:43
【问题描述】:

这是我的代码:

  class Asignaturas(object):
      def __init__(self,asignatura):
          self.asignatura = asignatura

  class Mate(Asignaturas):
    def mcm(self,num1,num2):
        print("estoy en el mcm\n")
        if(num1>num2):
            x = num1
        else:
            x = num2
        while(True):
            if((x %  num1 == 0) and (x % num2 ==0)):
                mcm = x
                break
            x = x+1
        print("aqui dentro del mcm\n")
        print(mcm)
        return mcm

if __name__ == "__main__":
x = int(input("que asignatura quieres ver? 1. 
Matematica 2.LEnguaje 3.Artes\n"))
if (x==1):
    y = int(input("quieres saber> 1.mcm o 
2.potencia\n"))
    if(y==1):
        num1 = int(input("ingresa un numero:\n"))
        num2 = int(input("ingresa otro numero:"))
        mcm = Mate(num1,num2)
        print(mcm)
        print("el mcm es:",mcm)

所以我想做的是从类 Mate 访问方法 mcm,这是另一个类 Asignaturas 的类。我试图从 main 调用它,但它给了我这个错误:

Traceback (most recent call last):
  File "huesos2.py", line 28, in <module>
   **mcm = Mate(num1,num2)**
TypeError: __init__() takes 2 positional arguments but 3 were given

【问题讨论】:

  • 买你为什么要通过num1,num2 而它只期待asignatura
  • 实际上,我根本看不出您在这里要做什么。为什么mcm 是类中的方法? Mate类的意义何在?为什么mcm 不只是一个可以单独调用的独立函数?
  • 我将 num1,num2 传递给另一个类 Mate,而不是 Asignaturas 类
  • 这只是学校的作业,我需要在继承类中包含一个方法,所以 Mate 来自 Asignaturas

标签: python class oop inheritance methods


【解决方案1】:

您必须首先通过调用 Asignaturas 中的 init() 函数来启动 Mate 对象。 注意它需要1个参数def __init__(self,asignatura):(你不必关心self) 然后你得到一个对象。你可以用你的 2 个号码调用 mcm 到这个对象。

所以你的代码一定是这样的:

mate = Mate(asignatura)
mate.mcm(num1, num2)

【讨论】:

  • 对不起,我刚从python开始,我应该在哪里以及为什么要定义:mate = Mate(asignatura)
  • 这是面向对象的编程。每次有一个类时,您首先需要启动一个对象,然后才能使用该类。但我认为你应该只用谷歌搜索“面向对象编程初学者”之类的东西,你会得到比我更好的资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
相关资源
最近更新 更多