3

我有一个名为schedule.py的文件:

class SchedGen:
    """ Class creates a pseudo random Schedule. 
    With 3/4 of total credit point required for graduation"""
    def __init__(self, nof_courses=40):
        random.seed()
        self.courses = {}
        self.nof_courses = nof_courses

        for i in xrange(nof_courses):
            self.courses[i] = college.Course(i)

        self.set_rand_cred()
        self.set_rand_chance()
        self.set_rand_preq_courses()



    def set_rand_cred(self):
        """ Set random credit to courses uniformly between 2 and 6"""
        temp_dict = self.courses.copy()

在导入日程内容时,我是否import schedule喜欢:

import schedule

如果这是正确的,我如何从 SchedGen 类访问函数 set_rand_cred(self) ?

4

6 回答 6

1

你可以做

import schedule
schedgen = schedule.SchedGen()
schedgen.set_rand_red()

或者

from schedule import SchedGen
schedgen = SchedGen()
schedgen.set_rand_red()

此链接提供了一些 Python导入语句如何工作的信息。

于 2013-01-02T16:33:49.993 回答
1

set_rand_cred()函数是类的实例函数,所以需要先创建一个类实例。要创建类实例,您需要能够访问类的名称。你可以通过两种方式做到这一点。

以下是使用每种方式解决问题的方法:

导入模块:

import schedule

s = schedule.SchedGen()
s.set_rand_cred()

从模块中导入类并将类放入本地命名空间:

from schedule import SchedGen

s = SchedGen()
s.set_rand_cred()
于 2013-01-02T16:34:55.340 回答
0

您必须首先创建一个实例(使用类的限定名称),然后将该函数作为实例的属性访问:

import schedule
s = schedule.SchedGen()
s.set_rand_cred()
于 2013-01-02T16:33:05.443 回答
0

像那样:

import schedule

schedule_generator = schedule.SchedGen()
schedule_generator.set_rand_cred()

有关更多信息,请阅读 Python 文档:http ://docs.python.org/2/tutorial/classes.html

于 2013-01-02T16:33:58.033 回答
0

这正是您导入另一个模块的方式,无论是第三方模块还是您创建的模块。现在,关于 python 的一大优点是您可以使用它的多种方式。一种是导入模块,从中检索类,或自行导入类。

import schedule
foo = schedule.SchedGen()
returned_var = foo.set_rand_cred()

如果您自己导入该类,则几乎完全相同:

from schedule import SchedGen
foo = SchedGen()
returned_var = foo.set_rand_cred()
于 2013-01-02T16:35:40.423 回答
0

你可以这样做:

import schedule
schedule.SchedGen.set_rand_cred()

但这样做更常见:

from schedule import SchedGen
SchedGen.set_rand_cred()
于 2013-01-02T16:35:51.650 回答