オブジェクトはクラスのインスタンスです。クラスはオブジェクトの青写真にすぎません。クラス定義を考えると-
# 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__