オブジェクトはクラスのインスタンスです。クラスは、オブジェクトの単なる設計図です。したがって、クラス定義が与えられた場合-
# 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})()