1. ホーム
  2. python

[解決済み] Python、オブジェクトの作成

2022-05-09 19:54:06

質問

Pythonを勉強しているのですが、クラスとそれをインスタンスで操作する方法のコツを掴もうとしているところです。

この練習問題を理解できないようです。

名前、年齢、専攻を持つ学生オブジェクトを作成し、返す。 入力として与えられたものと同じ

def make_student(name, age, major)

オブジェクトの意味がよくわからないのですが、これらの値を保持する配列を関数の中に作れという意味でしょうか? それとも、クラスを作り、この関数をその中に入れて、インスタンスを割り当てろということでしょうか?(この質問の前に、私は名前、年齢、および専攻を内部に持つ学生クラスを設定するように尋ねられました。)

class Student:
    name = "Unknown name"
    age = 0
    major = "Unknown major"

解決方法は?

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

私は前者の方が好きですが、後者でも便利な場合があります。たとえば、MongoDBのようなドキュメントデータベースを扱う場合です。