ออบเจ็กต์คืออินสแตนซ์ของคลาส คลาสเป็นเพียงพิมพ์เขียวของออบเจ็กต์ ดังนั้นให้นิยามคลาสของคุณ -
# 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__