스택큐힙리스트

나는 어떻게 객체를 생성하고 속성을 추가할 수 있을까요? 본문

카테고리 없음

나는 어떻게 객체를 생성하고 속성을 추가할 수 있을까요?

스택큐힙리스트 2023. 4. 3. 00:22
반응형

나는 Python에서 다른 객체 내부에 동적 객체를 생성하고 그것에 속성을 추가하고 싶습니다.

저는 시도해 보았습니다.

obj = someobject

obj.a = object()

setattr(obj.a, 'somefield', 'somevalue')

하지만 이것은 작동하지 않았습니다.

어떤 생각이 있나요?

편집하다.

나는 값 리스트를 반복하는 for 루프로부터 속성을 설정하고 있다. 예를 들어,

params = ['attr1', 'attr2', 'attr3']

obj = someobject

obj.a = object()

for p in params:

obj.a.p # where p comes from for loop variable

위의 예제에서 나는 obj.a.attr1 , obj.a.attr2 , obj.a.attr3 를 얻을 것입니다.

나는 setattr 함수를 사용했는데, for 루프에서 어떻게 obj.a.NAME을 수행할 지 몰라서였다.

위의 예에서 p 값에 기반하여 속성을 어떻게 설정하나요?

왜 작동하지 않는지에 대한 세부 정보는 Can't set attributes on instance of object class를 참조하십시오.

답변 1

내장된 object는 인스턴스화될 수 있지만 어떤 속성도 설정할 수 없습니다. (정확히 이러한 목적을 위해 설정할 수 있다면 좋겠습니다.) 이것은 속성을 저장하는 __dict__가 없습니다.

보통은 이렇게 하죠.

class Object(object):

pass

a = Object()

a.somefield = somevalue

할 수 있을 때마다, 나는 입력하는 데이터의 종류에 따라 Object 클래스에 더 의미 있는 이름을 지어줍니다.

일부 사람들은 다른 방법을 사용하는데, 그들은 키에 접근하기 위해 속성 접근을 허용하는 dict 의 하위 클래스를 사용합니다. (d.key 대신에 d['key'] )

편집 : 당신의 질문에 추가할 내용이 있다면, setattr을 사용해도 괜찮습니다. 다만, object() 인스턴스에서는 사용할 수 없습니다.

params = ['attr1', 'attr2', 'attr3']

for p in params:

setattr(obj.a, p, value)

답변 2

객체는 프로그래밍에서 매우 중요한 개념입니다. 이는 변수와 함수를 묶어서 표현할 수 있는 것으로, 논리적인 의미를 가질 수 있습니다. 객체를 선언하고 여러 속성들을 추가하는 방법에 대해 살펴보겠습니다.

먼저 객체를 선언하는 방법은 변수 이름을 지정하고 중괄호를 사용하여 선언할 수 있습니다. 이때 중괄호 안에 속성 이름과 값이 쌍으로 들어갑니다. 예를 들어, 다음과 같이 객체를 생성할 수 있습니다.

var person = {

name: John,

age: 30,

job: Developer

};

위와 같은 코드에서 person은 변수 이름이며 중괄호 안에는 name, age, job이라는 세 개의 속성이 들어가 있습니다. 속성 이름 뒤에는 콜론을 사용하여 값을 할당합니다.

또 다른 방법은 빈 객체를 생성하고 속성을 추가하는 것입니다. 이 경우에는 다음과 같이 작성할 수 있습니다.

var person = {};

person.name = John;

person.age = 30;

person.job = Developer;

위와 같이 빈 객체를 먼저 생성한 다음, 점 표기법을 사용하여 속성을 추가합니다. 이 방법은 속성을 동적으로 추가할 때 매우 유용합니다.

또 하나의 방법은 생성자 함수를 사용하는 것입니다. 생성자 함수는 객체를 만드는 함수입니다. 이를 사용하면 매번 새로운 객체를 생성할 때 속성을 추가하는 작업을 반복하지 않아도 됩니다.

function Person(name, age, job) {

this.name = name;

this.age = age;

this.job = job;

}

var person = new Person(John, 30, Developer);

위와 같이 생성자 함수를 선언하고, new 연산자를 사용하여 객체를 생성할 수 있습니다. 생성자 함수 내에서는 this라는 키워드를 사용하여 객체에 속성을 추가합니다.

객체를 생성하고 속성을 추가하는 방법은 다양합니다. 중요한 것은 객체를 다룰 때 변수와 함수가 함께 묶여 있다는 것을 기억하는 것입니다. 이를 활용하면 논리적인 의미를 가지는 코드를 작성할 수 있습니다.

반응형
Comments