在python中使用类中的

在python中使用类中的,python,python-2.7,Python,Python 2.7,我有一个classex.py文件: class Class1: def method1(): print 'stack1' def method2(): print 'over1' def method3(): print 'flow1' class Class2: def method1(): print 'stack2' def method2(): print 'ove

我有一个classex.py文件:

class Class1:
    def method1():
        print 'stack1'
    def method2():
        print 'over1'
    def method3():
        print 'flow1'

class Class2:
    def method1():
        print 'stack2'
    def method2():
        print 'over2'
    def method3():
        print 'flow2'

class Class3:
    def method1():
        print 'stack3'
    def method2():
        print 'over3'
    def method3():
        print 'flow3'
我想要访问
classex
file类,因此我将导入该文件,以了解如何在各种类中访问

例如:

import classex
print Class1.method1()
print Class2.method2()
我的预期输出是
stack1
over2

class Class1:
    def method1(self): # instance  is passed implicity as first arg
        print 'stack1'
    def method2(self):
        print 'over1'
    def method3(self):
        print 'flow1'

class Class2:
    def method1(self):
        print 'stack2'
    def method2(self):
        print 'over2'
    def method3(self):
        print 'flow2'

class Class3:
    def method1(self):
        print 'stack3'
    def method2(self):
        print 'over3'
    def method3(self):
        print 'flow3'


实际上,您并没有导入类本身,只是导入了模块

import classex
要访问这些类,您必须执行以下操作:

>>> myclass = classex.Class1()
>>> myclass2 = classex.Class2()
>>> myclass.method1()
stack1
>>> mycalss2.Class2.method2()
over2
或者直接导入类:

>>> from classex import Class1, Class2
>>> myclass = Class1()
>>> myclass2 = Class2()
>>> myclass.method1()
stack1
>>> myclass2.method2()
over2
或者你可以这样做

class Class1:
    @classmethod
    def method1(clss):
        print 'stack1'
    @classmethod
    def method2(clss):
        print 'over1'
    @classmethod
    def method3(clss):
        print 'flow1'

class Class2:
    @classmethod
    def method1(clss):
        print 'stack2'
    @classmethod
    def method2(clss):
        print 'over2'
    @classmethod
    def method3(clss):
        print 'flow2'

class Class3:
    @classmethod
    def method1(clss):
        print 'stack3'
    @classmethod
    def method2(clss):
        print 'over3'
    @classmethod
    def method3(clss):
        print 'flow3'
然后

import classex

classex.Class1.method2()
等等

但你所做的并没有让我觉得你对OOP原理理解得那么好,或者你是从另一种OOP语言中学习的,这种语言有一些一流的方法,你希望得到同样的结果。
OO的Python实现与Java或C#等稍有不同,因此请务必阅读一些Python中方法的定义。

您需要阅读Python教程。因为这不是Python 3,您应该使用
类SomeClass(object):
来使用新样式的classestrue,但因为它实际上不是一个关键字,只是一个名称,这个问题一点都不重要。奇怪的是,他们没有把“self”和“cls”作为关键词。我不确定我是否会把PEP8描述为“一点都不重要”。。。这不是一个要求,但遵循它确实是一个好主意。
import classex

classex.Class1.method2()