programing

Python, 객체 생성

mailnote 2023. 7. 20. 22:05
반응형

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 철학의 원칙 중 하나는 "그것을 하는 하나의 분명한 방법이 있어야 한다"는 것이지만, 이를 위한 여러 가지 방법이 있습니다.다음 두 코드 조각을 사용하여 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와 같은 문서 데이터베이스를 사용할 때입니다.

클래스를 만들고 클래스를 지정합니다.__init__방법:

class Student:
    def __init__(self, name, age, major):
        self.name = name
        self.age = age
        self.major = major

    def is_old(self):
        return self.age > 100

이제 의 인스턴스를 초기화할 수 있습니다.Student클래스:

>>> s = Student('John', 88, None)
>>> s.name
    'John'
>>> s.age
    88

당신이 왜 필요한지는 모르겠지만,make_student학생 기능과 같은 일을 할 경우Student.__init__.

개체는 클래스의 인스턴스입니다.클래스는 객체의 청사진일 뿐입니다.그래서 당신의 클래스 정의를 고려하면 -

# 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})()

미리 정의된 클래스를 사용하여 개체를 생성하는 경우 먼저 해당 개체를 저장하기 위한 변수를 생성해야 합니다.그런 다음 개체를 생성하고 생성한 변수를 저장할 수 있습니다.

class Student:
     def __init__(self):

# creating an object....

   student1=Student()

실제로 이 init 메서드는 클래스의 생성자입니다.몇 가지 속성을 사용하여 해당 메서드를 초기화할 수 있습니다.이 경우 개체를 만들 때 특정 속성에 대한 일부 값을 전달해야 합니다.

class Student:
      def __init__(self,name,age):
            self.name=value
            self.age=value

 # creating an object.......

     student2=Student("smith",25)

언급URL : https://stackoverflow.com/questions/15081542/python-creating-objects

반응형