본문 바로가기

Languages58

Python multiple inheritance with diamond hierarchy super를 사용해 multiple inheritance를 구현하다 보면, 다른 언어와는 다른 특성을 발견하게 됩니다. 예제와 그 실행 결과를 보시죠. class Mixin(object): def create(self, str): print str + ".t" class MixinA(Mixin): def create(self, str): super(MixinA, self).create(str+".a") #Mixin.create(self, str) class MixinB(Mixin): def create(self, str): super(MixinB, self).create(str+".b") #Mixin.create(self, str) class Aggregate(MixinB, MixinA): def __i.. 2014. 12. 11.
Abstract Base Class 예제 in Python import siximport abc @six.add_metaclass(abc.ABCMeta)class MyAbstractClass(object): @abc.abstractmethod def abstract_method(self): while False: yield None def public_method(self): self.abstract_method() class MyConcreteClass(MyAbstractClass): def abstract_method(self): ''' if this method is omitted, following error is raised when public_method is called against an object. TypeError: Can't instant.. 2014. 12. 5.
이펙티브 자바(Effective Java) 2판 재출간(인사이트) 이펙티브 자바(Effective Java)의 2판이 다시 번역되어 재출간되었습니다. 출판사는 인사이트입니다. 원래 대웅출판사에서 번역되어 출간되었다가 절판된 것을 이번에 인사이트에서 다시 번역해서 출간했습니다. 원래 번역본을 전혀 참고하지 않은, 전면적인 재 번역입니다. 참고하시라고, 118페이지의 본문을 발췌해 보았습니다. 규칙 16은 계승을 위한 설계와 문서를 갖추지 않은 “이질적(foreign)” 클래스의 하위 클래스를 만들 때 생기는 문제점을 설명하고 있다. 그렇다면 계승을 위한 설계와 문서를 갖춘다는 것은 어떤 의미일까? 우선, 메서드를 재정의하면 무슨 일이 생기는지 정확하게 문서로 남겨야 한다. 다시 말해, 재정의 가능 메서드를 내부적으로 어떻게 사용하는지(self-use) 반드시 문서에 남기.. 2014. 9. 5.
[Java 1.8] 자료형 토큰 대신, 메서드 참조를 Java 1.8부터 ::를 통한 메서드 참조가 가능하기 때문에 (이런 참조는 전부 Functional 계열의 인터페이스를 통해 처리됩니다) 자료형 토큰 (MyClass.class 같은 것들) 사용을 줄일 수 있습니다. 다음의 enum 자료형 예제를 보시죠. 각 상수에 해당 상수가 나타내는 Mode의 객체를 반환하는 기능이 들어 있는데, 자료형 토큰 없이도 생성자를 넘기고, 해당 생성자에 따라 객체를 만들 수 있습니다. 생성자는 Supplier 인터페이스를 통해 참조할 수 있습니다. 이 인터페이스는 T get() 메서드를 가지고 있습니다. interface Encoder {void init();void setQuality(int quality);int getFrameSize();void encode(Bit.. 2014. 8. 4.