객체는 클래스의 인스턴스입니다. 클래스는 단지 객체의 청사진입니다. 클래스 정의가 주어지면-
# 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__