对象是类的实例。类只是对象的蓝图。因此,根据您的类定义-
# Note the added (object) - this is the preferred way of creating new classes
class Student(object):
name = "Unknown name"
age = 0
major = "Unknown major"
您可以make_student通过将属性明确分配给Student- 的新实例来创建函数
def make_student(name, age, major):
student = Student()
student.name = name
student.age = age
student.major = major
return student
但是在构造函数(__init__)中执行此操作可能更有意义-
class Student(object):
def __init__(self, name="Unknown name", age=0, major="Unknown major"):
self.name = name
self.age = age
self.major = major
使用时会调用构造函数Student()。它将采用__init__方法中定义的参数。现在,构造函数签名实际上将是Student(name, age, major)。
如果使用该make_student函数,那么函数是微不足道的(并且是多余的)-
def make_student(name, age, major):
return Student(name, age, major)
为了好玩,这里有一个示例,说明如何在make_student不定义类的情况下创建函数。请不要在家尝试。
def make_student(name, age, major):
return type('Student', (object,),
{'name': name, 'age': age, 'major': major})()
__init__是与该方法相关的文档: docs.python.org/2/reference/datamodel.html#object.__init__