728x90
반응형

OOP 12

파이썬 __init__와 self 의 의미

질문 : __init__와 self는 파이썬에서 무엇을합니까? 저는 파이썬 프로그래밍 언어를 배우고 있는데 제가 완전히 이해하지 못하는 것을 발견했습니다. 다음과 같은 방법으로 : def method(self, blah): def __init__(?): .... .... self 는 무엇을합니까? 그것은 무엇을 의미합니까? 필수인가요? __init__ 메소드는 무엇을합니까? 왜 필요한가요? (기타.) 나는 그들이 OOP 구조라고 생각하지만 잘 모르겠습니다. 답변 이 코드에서 : class A(object): def __init__(self): self.x = 'Hello' def method_a(self, foo): print self.x + ' ' + foo ... self 변수는 객체 자체의 인스턴스..

파이썬에서 정적 클래스 변수를 사용하는 방법

질문 : 파이썬에서 정적 클래스 변수가 가능합니까? 파이썬에서 정적 클래스 변수 나 메서드를 가질 수 있습니까? 이를 수행하려면 어떤 구문이 필요합니까? 답변 클래스 정의 내부에서 선언되었지만 메서드 내부가 아닌 변수는 클래스 또는 정적 변수입니다. >>> class MyClass: ... i = 3 ... >>> MyClass.i 3 @ millerdev가 지적했듯이 이것은 클래스 수준 i 변수를 생성하지만 인스턴스 수준 i 변수와 구별되므로 다음을 가질 수 있습니다. >>> m = MyClass() >>> m.i = 4 >>> MyClass.i, m.i >>> (3, 4) 이는 C ++ 및 Java와 다르지만 인스턴스에 대한 참조를 사용하여 정적 멤버에 액세스 할 수없는 C #과 크게 다르지 않습니다..

Python의 '__enter__'및 '__exit__'설명

질문 : Python의 '__enter__'및 '__exit__'설명 누군가의 코드에서 이것을 봤습니다. 무슨 뜻이에요? def __enter__(self): return self def __exit__(self, type, value, tb): self.stream.close() from __future__ import with_statement#for python2.5 class a(object): def __enter__(self): print 'sss' return 'sss111' def __exit__(self ,type, value, traceback): print 'ok' return False with a() as s: print s print s 답변 이러한 매직 메서드 ( __enter..

상속성보다 컴포지션을 선호하는 이유

질문 : 상속보다 구성을 선호하십니까? 상속보다 구성을 선호하는 이유는 무엇입니까? 각 접근 방식에는 어떤 절충점이 있습니까? 언제 구성보다 상속을 선택해야합니까? 답변 상속성보다 컴포지션을 선호하는 이유는 나중에 수정하기 쉽기 때문입니다. 그러나 항상 compose-always 접근 방식을 사용하지 마십시오. 컴포지션을 사용하면 종속성 주입 / 세터를 사용하여 즉시 동작을 쉽게 변경할 수 있습니다. 상속은 대부분의 언어가 둘 이상의 유형에서 파생되는 것을 허용하지 않기 때문에 더 엄격합니다. 따라서 TypeA에서 파생되면 거위가 다소 조리됩니다. 위의 내 산성 테스트는 다음과 같습니다. TypeB가 TypeA가 예상되는 곳에 TypeB를 사용할 수 있도록 TypeA의 완전한 인터페이스 (모든 공용 메서..

개발관련/other 2021.12.07

Python에서 이전 스타일과 새 스타일 클래스의 차이점

질문 : Python에서 이전 스타일과 새 스타일 클래스의 차이점은 무엇입니까? Python에서 이전 스타일과 새 스타일 클래스의 차이점은 무엇입니까? 둘 중 하나를 언제 사용해야합니까? 답변 새로운 스타일 및 클래식 클래스에서 : Python 2.1까지 구식 클래스는 사용자가 사용할 수있는 유일한 버전이었습니다. (구식) 클래스의 개념은 유형의 개념과 관련이 없습니다. x 가 구식 클래스의 인스턴스 인 경우 x.__class__ x 의 클래스를 지정하지만 type(x) 는 항상 . 이는 클래스와 관계없이 모든 구식 인스턴스가 인스턴스라고하는 단일 내장 유형으로 구현된다는 사실을 반영합니다. 클래스와 유형의 개념을 통합하기 위해 Python 2.2에서 새로운 스타일의 클래스가 도입되었습니다 . 새로운 스..

자바 스크립트 private 메서드

질문 : 자바 스크립트 비공개 메서드 공용 메서드로 JavaScript 클래스를 만들려면 다음과 같이합니다. function Restaurant() {} Restaurant.prototype.buy_food = function(){ // something here } Restaurant.prototype.use_restroom = function(){ // something here } 이렇게하면 내 수업의 사용자가 다음을 수행 할 수 있습니다. var restaurant = new Restaurant(); restaurant.buy_food(); restaurant.use_restroom(); buy_food 및 use_restroom 메소드로 호출 할 수 있지만 클래스 사용자가 외부 적으로 호출 할 ..

Inversion of Control 에 대해서

질문 : Inversion of Control이란 무엇입니까? IoC (Inversion of Control)는 처음 발생했을 때 매우 혼란 스러울 수 있습니다. 답변 IoC (Inversion of Control) 및 DI (Dependency Injection) 패턴은 모두 코드에서 종속성을 제거하는 것입니다. 예를 들어 응용 프로그램에 텍스트 편집기 구성 요소가 있고 맞춤법 검사를 제공하려고한다고 가정합니다. 표준 코드는 다음과 같습니다. public class TextEditor { private SpellChecker checker; public TextEditor() { this.checker = new SpellChecker(); } } TextEditor 와 SpellChecker 사이에 ..

개발관련/other 2021.10.25

파이썬 클래스가 객체를 상속하는 이유

질문 : 파이썬 클래스는 왜 객체를 상속합니까? object 에서 상속하는 이유가 있습니까? 방금이 작업을 수행하는 코드를 찾았고 그 이유를 찾을 수 없습니다. class MyClass(object): # class code follows... 답변 Python 3에서는 Python 2와 3 간의 호환성을 제외하고는 이유가 없습니다 . Python 2에서는 여러 가지 이유가 있습니다. Python 2.x story: object 의 존재 여부에 따라 두 가지 스타일의 클래스가 있습니다. "클래식"스타일 클래스 : 기본 클래스로 object >>> class ClassicSpam: # no base class ... pass >>> ClassicSpam.__bases__ () "새로운"스타일 클래스 : 직..

클래스 이름 지정 - 모든 것을 "<WhatEver>Manager"라고 부르지 않는 방법

질문 : 이름 지정 클래스-모든 것을“ 매니저"? 오래 전에 나는 객체 이름 지정에 대해 "올바른"궤도에 올랐던 기사 (블로그 항목을 믿습니다)를 읽었습니다. 프로그램에서 이름을 지정하는 데 매우 신중해야합니다. 예를 들어 내 응용 프로그램이 사용자, 회사 및 주소를 처리하는 경우 (일반적인 비즈니스 앱) User , Company 및 Address 도메인 클래스가 있고 아마도 UserManager , CompanyManager 및 AddressManager 가 팝업되어 그것들. UserManager , CompanyManager 및 AddressManager 가 무엇을하는지 알 수 있습니까? 아니요, Manager는 도메인 개체로 수행 할 수있는 모든 작업에 적합한 매우 일반적인 용어이기 때문입니다. ..

개발관련/other 2021.09.16

JavaScript 객체의 클래스를 얻는 방법

질문 : JavaScript 객체의 클래스를 얻는 방법은 무엇입니까? JavaScript 개체를 만들었지 만 해당 개체의 클래스를 어떻게 확인할 수 있습니까? .getClass() 메서드와 비슷한 것을 원합니다. 답변 자바 스크립트에서 자바 getClass() 와 정확히 일치하는 것은 없습니다. 대부분은 Java가 클래스 기반 언어 인 것과 달리 JavaScript가 프로토 타입 기반 언어 이기 때문입니다. getClass() 가 필요한 것에 따라 JavaScript에는 몇 가지 옵션이 있습니다. typeof instanceof obj. constructor func. prototype , proto . isPrototypeOf 몇 가지 예 : function Foo() {} var foo = new F..

파이썬의 자식 클래스에서 부모 클래스의 메서드를 호출하는 방법

질문 : 파이썬의 자식 클래스에서 부모 클래스의 메서드를 어떻게 호출합니까? Python에서 간단한 개체 계층을 만들 때 파생 클래스에서 부모 클래스의 메서드를 호출 할 수 있기를 원합니다. Perl과 Java에는 이에 대한 키워드가 있습니다 ( super ). Perl에서는 다음과 같이 할 수 있습니다. package Foo; sub frotz { return "Bamf"; } package Bar; @ISA = qw(Foo); sub frotz { my $str = SUPER::frotz(); return uc($str); } Python에서는 자식에서 명시 적으로 부모 클래스의 이름을 지정해야하는 것으로 보입니다. Foo::frotz() 와 같은 작업을 수행해야합니다. 이 동작은 깊은 계층 구조를 ..

C ++에서 클래스와 구조체 사용시기

질문 : C ++에서 언제 클래스와 구조체를 사용해야합니까? 어떤 시나리오에서 C ++에서 struct 대 class 를 사용하는 것이 더 낫습니까? 답변 C ++에서 class 와 struct 의 차이점은 다음과 같습니다. struct 멤버와 기본 클래스 / 구조체는 기본적으로 public class 멤버와 기본 클래스 / 스트럿은 기본적으로 private 클래스와 구조체는 모두 public , protected 및 private 멤버를 혼합하여 가질 수 있으며 상속을 사용할 수 있으며 멤버 함수를 가질 수 있습니다. 추천합니다 : 클래스와 유사한 기능이없는 일반 오래된 데이터 구조에 struct 를 사용하십시오. private 또는 protected 멤버, 기본이 아닌 생성자 및 연산자 등과 같은 기..

728x90
반응형