如何在python中的不同文件中使用一个类的方法到另一个类

时间:2015-07-30 05:49:10

标签: python python-2.7

我对python很新,所以原谅我的基本问题。我过去几天试过谷歌,但无法在我的程序中使用谷歌。

任何人都可以向我展示一个很好的例子,我如何在python中使用从一个类到另一个类的方法,以及在定义类时__init__的重要性。

我正在使用python2.7

感谢您的期待。

3 个答案:

答案 0 :(得分:4)

要使用在另一个类中的一个类中定义的方法,您有几个选项:

  1. 从A的方法中创建一个B实例,然后调用B的方法:

    class A:
        def methodInA():
            b = B()
            b.methodInB()
    
  2. 如果合适,使用继承(面向对象设计的定义概念之一)的概念来创建原始类的子类,其中您希望使用其方法:

    class B(A):
        ...
    
  3. __init__()是一个类初始化程序。无论何时实例化对象,都要调用__init__(),无论是否明确定义。它的主要目的是初始化类数据成员:

    class C:
        def __init__(self, name):
            self.name = name
        def printName(self):
            print self.name
    
    c = C("George")
    c.printName() # outputs George
    

    定义了__init__(),特别是在此示例中使用了附加参数name,您可以通过允许不同的初始值来区分可能的一般构造的实例从实例到实例的状态。

答案 1 :(得分:1)

这里有两个问题:

首先:使用B类中的A类方法,两个类都在不同的文件中

class A:
    def methodOfA(self):
        print "method Of A"

让上面的类在文件a.py中。现在B类应该在b.py中。假设a.py和b.py都在同一级别或同一位置。然后b.py看起来像:

import a
class B:
    def methodOfB(self):
        print "Method of B"
        a.A().methodOfA()

你也可以通过在B中加入A

来做到这一点
import a
class B(a.A):
    def methodOfB(self):
        print "Method of B"
        self.methodOfA()

还有其他几种方法可以在B中使用A.我会留给你探索。

现在回答你的第二个问题。在类中使用__init____init__不是构造函数,正如上面普遍认为和解释的那样。顾名思义,它是一个初始化函数。只有在已经构造了对象之后才会调用它,并且它会隐式地将对象实例作为第一个参数传递,如其参数列表中的 self 所示。

python中的实际构造函数名为__new__,它不需要对象来调用它。这实际上是一个专门的静态方法,它接收类实例作为第一个参数。仅当类继承自python的对象基类

时才会覆盖__new__以进行覆盖

无论在创建类的对象时传递了什么其他参数,首先转到__new__,然后将对象实例传递给__init__,如果它接受它们的话。

答案 2 :(得分:0)

init函数就是所谓的构造函数。创建类object = myClass()的实例时,init是自动调用的函数。即

话虽如此,要将函数从一个类调用到另一个类,您需要在第一个类中调用第二个类的实例,反之亦然。例如。

class One():
    def func(self):
        #does sometthing here

class Two():
    def __init__(self):
        self.anotherClass = One()
        #Now you can access the functions of the first class by using anotherClass followed by dot operator
        self.anotherClass.func()

#When you call the main class. This is the time the __init__ function is automatically called

mainClass = Two()

从另一个类访问的另一种方法是使用名为继承的oop概念。

class One():
    def __init__(self):
        print('Class One Called')
    def func(self):
        print('func1 Called')

class Two(One):
    def __init__(self):
        One.__init__(self,) #This basically creates One's instance
        print('Main Called')

c= Two()
c.func()

这个输出是:

  

一级被称为   主要称为   func1叫