私は Python を学ぼうとしており、現在はクラスの仕組みと、インスタンスを使ってクラスを操作する方法を習得しようとしています。
この練習問題が理解できないようです:
入力として与えられた名前、年齢、専攻と同じ学生オブジェクトを作成して返します。
def make_student(name, age, major)
オブジェクトの意味がわかりません。関数内にこれらの値を保持する配列を作成する必要があるのでしょうか。それとも、クラスを作成してこの関数をその中に配置してインスタンスを割り当てるのでしょうか。(この質問の前に、名前、年齢、専攻を含む学生クラスを設定するように求められました)
class Student:
name = "Unknown name"
age = 0
major = "Unknown major"
ベストアンサー1
class Student(object):
name = ""
age = 0
major = ""
# The class "constructor" - It's actually an initializer
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
def make_student(name, age, major):
student = Student(name, age, major)
return student
Pythonの哲学の原則の1つは「それを実行する明白な方法は 1 つ、できれば 1 つだけあるべきです」ただし、これを行う方法は複数あります。次の 2 つのコード スニペットを使用して、Python の動的機能を活用することもできます。
class Student(object):
name = ""
age = 0
major = ""
def make_student(name, age, major):
student = Student()
student.name = name
student.age = age
student.major = major
# Note: I didn't need to create a variable in the class definition before doing this.
student.gpa = float(4.0)
return student
私は前者を好みますが、後者が便利な場合もあります。その 1 つは、MongoDB のようなドキュメント データベースを操作する場合です。