2016-07-10 2 views
2

저는 텍스트 기반 RPG에 항목을 추가하는 중입니다. 내 클래스는 다음과 같다 :하위 클래스를 만드는 대신 클래스의 인스턴스를 만드는시기를 알고 있습니까?

class Item(object): 
    def __init__(self, name, value, description): 
     self.name = name 
     self.value = value 
     self.description = description 

class Weapon(Item): 
    def __init__(self, name, value, damage, description): 
     self.damage = damage 
     super(Weapon, self).__init__(name, value, description) 

내 플레이어의 재고가 서로 다른 게임 항목 그룹을 나타내는 키와 사전입니다 :

class Player(object): 
    def __init__(self, inventory, ...): 
     self.inventory = {'weapons': []} 
hero = Player() 

질문입니다 자습서를 볼 때, 그들은 나를 클래스를 만들어가 그래서 항목의 :

class Dagger(Weapon): 
    def __init__(...) 
     ... 

그리고 나의 목록에 추가 hero.inventory['weapons'].append(Dagger())

내 질문 : 개인 무기에 추가 할 속성이 없으므로 클래스의 인스턴스를 작성하는 것 이상의 Dagger()과 같은 새 하위 클래스를 만드는 것이 좋습니다.

어떤 도움을 주셔서 감사합니다.

답변

0

코드 스타일 측면에서 볼 때 하위 클래스를 만드는 것이 더 동적 인 코드 기반을 허용하므로 더 확장 할 수 있으므로 더 좋습니다. 또한 코드를보다 읽기 쉽게 만들 수 있으며 도움말 메시지/정보 텍스트를보다 쉽게 ​​추가 할 수 있습니다. 그러나, 말했듯이 손상을 저장하기 만하면 하위 클래스를 만드는 데 많은 이점이 없습니다. 마음에 무기의 이름을 저장하고 싶다는 사실을 명심하십시오. 추가 개발이 가능하고 코드 스타일을 향상시키기 때문에 하위 클래스를 작성하는 것이 좋습니다.

0

새로 생성 된 하위 클래스에 다른 변수를 추가할지 여부는 모두 다릅니다. 위험은 이름, 가치, 피해 및 설명으로 무기 등급을 결정합니다. 내 다른 무기에는 장검, 검, 대거, 스태프 등과 같은 하위 클래스가 있습니다. 이러한 공격 유형에는 다양한 유형의 무기가 있습니다. 단검은 잽/찌르기가있을 수 있지만 longsword는 슬래시, 잽, 그리고 일종의 파워 슬래시가있을 수 있습니다.

3

자연스러운 관계가있을 때 하위 클래스를 사용하십시오.

단지 코드 재사용을 얻기 위해 상속을 사용하지 마십시오

그것으로 완벽한 의미가 그래서 그냥, 단검은 무기입니다 다형성 귀하의 예를 들어 경우

을 얻기 위해 상속을 사용하지 마십시오

하위 클래스를 사용하십시오.

당신이 구성 대 상속을 검색하는 경우 당신은 좋은 독서 자료를 얻을 수

, 또는이다-A가-A 대이

을하는 데 도움이

희망을

관련 문제