Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.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_Function_Class - Fatal编程技术网

Python:如何从函数加载已创建的类?

Python:如何从函数加载已创建的类?,python,function,class,Python,Function,Class,我对这门语言很陌生,我一直面临以下问题: 我已经定义了一个类,我想使用一个函数创建该类的多个对象,但这似乎不起作用 class age: def __init__ (self): self.age = value def function (name): global value value = 27 name = age() function("anna") print "Age:", anna.age 输出: Traceback (mos

我对这门语言很陌生,我一直面临以下问题:

我已经定义了一个类,我想使用一个函数创建该类的多个对象,但这似乎不起作用

class age:
    def __init__ (self):
        self.age = value

def function (name):
    global value
    value = 27
    name = age()

function("anna")
print "Age:", anna.age
输出:

Traceback (most recent call last):
  File "test.py", line 15, in <module>
    print "Age:", anna.age
NameError: name 'anna' is not defined
Age: 27
输出:

Traceback (most recent call last):
  File "test.py", line 15, in <module>
    print "Age:", anna.age
NameError: name 'anna' is not defined
Age: 27

我想让第一个代码工作。。。有什么建议或想法吗?谢谢大家!

这里有几个错误。首先,我应该说你需要复习你的知识(阅读文档,阅读更多教程,等等)。因此,首先,您确实需要返回刚刚创建的对象。因此:

def function (name):
    global value
    value = 27
    name = age() # This is weird. You've passed in `name`, only to re-assign it.
    return name # Very important

anna = function("anna")
print "Age:", anna.age
其次,这门课没什么意义。。。它不应该被称为
age
,只应该具有
age
属性。我建议进行以下调整(以我的拙见):

但是,使用这样一个简单的函数,您最好在全局范围内声明实例:

anna = Person(27, "anna")
print "Age:", anna.age
注: 您的第二个版本因范围而起作用。这是编程语言中的一个基本概念。定义变量/名称标识符时,再次引用它的能力将取决于定义它的范围。函数有自己的作用域,试图从外部引用在其内部创建的名称是行不通的

正如我向您展示的,编程的另一个基本部分是能够使用返回语句,它允许您捕获结果并在最初创建结果的地方之外使用它(在本例中是
函数

最后一件事 我注意到您打算使用
global
关键字声明
,并使用该关键字在
age
类中定义您的
self.age
。永远不要那样做;这就是构造函数的作用(
\uuuuu init\uuuu
)。正如我在上面的示例中所示,您可以轻松地将参数传递给它(
def\uuu init\uuu(self、age、name)

最后,我要说的是:
global
关键字的使用是有原因的,因为在某些情况下它是有理由的。我个人不使用它,也不经常使用它。这有一个很好的理由,你以后可能会理解,这确实超出了这个问题的范围。请记住,通常不需要在函数中声明变量
global
,而且从长远来看,它通常会导致错误代码


如果您习惯于传递参数,那么在开始时(以及将来),您的境况会好得多。

这里有几个错误。首先,我应该说你需要复习你的知识(阅读文档,阅读更多教程,等等)。因此,首先,您确实需要返回刚刚创建的对象。因此:

def function (name):
    global value
    value = 27
    name = age() # This is weird. You've passed in `name`, only to re-assign it.
    return name # Very important

anna = function("anna")
print "Age:", anna.age
其次,这门课没什么意义。。。它不应该被称为
age
,只应该具有
age
属性。我建议进行以下调整(以我的拙见):

但是,使用这样一个简单的函数,您最好在全局范围内声明实例:

anna = Person(27, "anna")
print "Age:", anna.age
注: 您的第二个版本因范围而起作用。这是编程语言中的一个基本概念。定义变量/名称标识符时,再次引用它的能力将取决于定义它的范围。函数有自己的作用域,试图从外部引用在其内部创建的名称是行不通的

正如我向您展示的,编程的另一个基本部分是能够使用返回语句,它允许您捕获结果并在最初创建结果的地方之外使用它(在本例中是
函数

最后一件事 我注意到您打算使用
global
关键字声明
,并使用该关键字在
age
类中定义您的
self.age
。永远不要那样做;这就是构造函数的作用(
\uuuuu init\uuuu
)。正如我在上面的示例中所示,您可以轻松地将参数传递给它(
def\uuu init\uuu(self、age、name)

最后,我要说的是:
global
关键字的使用是有原因的,因为在某些情况下它是有理由的。我个人不使用它,也不经常使用它。这有一个很好的理由,你以后可能会理解,这确实超出了这个问题的范围。请记住,通常不需要在函数中声明变量
global
,而且从长远来看,它通常会导致错误代码


如果您习惯于传递参数,那么在开始时(以及将来),您的境况会好得多。

这里有几个错误。首先,我应该说你需要复习你的知识(阅读文档,阅读更多教程,等等)。因此,首先,您确实需要返回刚刚创建的对象。因此:

def function (name):
    global value
    value = 27
    name = age() # This is weird. You've passed in `name`, only to re-assign it.
    return name # Very important

anna = function("anna")
print "Age:", anna.age
其次,这门课没什么意义。。。它不应该被称为
age
,只应该具有
age
属性。我建议进行以下调整(以我的拙见):

但是,使用这样一个简单的函数,您最好在全局范围内声明实例:

anna = Person(27, "anna")
print "Age:", anna.age
注: 您的第二个版本因范围而起作用。这是编程语言中的一个基本概念。定义变量/名称标识符时,再次引用它的能力将取决于定义它的范围。函数有自己的作用域,试图从外部引用在其内部创建的名称是行不通的

正如我向您展示的,编程的另一个基本部分是能够使用返回语句,它允许您捕获结果并在最初创建结果的地方之外使用它(在本例中是
函数

最后一件事 我注意到您打算使用
global
关键字