オブジェクト向け


オブジェクト向け
1.クラスとインスタンス
class(クラス):簡単に言えば「親」であり、オブジェクトから共通点を見つけます.
object(オブジェクト):実世界にエンティティ(インスタンス)をオブジェクト(オブジェクト)として存在する
ex1. '「りんご」は等級で、「昨夜食べた5つのりんごのうち2番目」は実例で、対象です.
class Singer:	# 가수를 정의
	def sing(self):	# 노래하기 메서드 (클래스 내부에 정의된 함수를 메서드라고 함)
    	return "LALALA"

taeji = Singer()	# Singer()라는 클래스를 taeji라는 객체에 넣기
taeji.sing()		# 객체.sing (메서드는 이렇게 객체.메서드)

>> "LALALA"
singメソッドはSingerというクラスの挙動を定義する.Singerクラスを作成し、taegiという名前のオブジェクトを作成します.인스턴스 = 클래스()
ricky = Singer()
ricky.sing()
>> "LALALA"
rickyという名前のオブジェクトにSingerというクラスを含める方法を使えば同じようにLALAを返却します
2.変数とメソッド
実世界に存在するエンティティ(インスタンス)->オブジェクト(オブジェクト)
オブジェクトの共通点を概念的に要約する->クラス(class)
class Amazon:
	strength = 20
    dextretiy = 25
    vitality = 20
    energy = 15
    
    def attack(self):
    	return "WOW"
Amazonクラスが持つ力、技術、体力、エネルギーの4つの性質は変数で表される.攻撃という行為は方法によって表現されている.
import diablo2
jane = diablo2.Amazon()
mary = diablo2.Amazon()
ジェーンとマリーはAmazonクラスのオブジェクトです.Amazonに必要な4つの素質を備えています.
jane.strength
>> 20
jane.attack()
>> "WOW"
オブジェクト(Jane)はクラスで定義された変数(強度、エネルギー...)です.と方法(攻撃).ただし、メソッドを定義する場合と、メソッドを使用する場合とでは違います.Amazonクラスでメソッドを定義するときにdef attack(self):というselfパラメータを受け取り、Janeオブジェクトのメソッドを呼び出すときにattack()と呼ぶ.この部分は本当に混同されています.
self
selfとは、クラス内のオブジェクトを指します.JaneとMaryは同じ攻撃方法を持っているので、それらを区別するために使用され、方法を定義する際にselfというパラメータを使用していると考えられています.
def exercise(self):
	self.strength += 2
    self.dexterity += 3
    self.vitality += 1
この方法は訓練後の力、技術、体力の向上を示している.
import diablo2
eunhye = diablo2.Amazon() # eunhye라는 객체에 넣어줌
eunhye.exercise() # 메서드 호출 (self 안써줌 - 메서드 호출)
eunhye.strength
>> 22
こうして+2パワーになって22
3.継承
オブジェクト向けプログラミングのコアコンセプトの1つを継承します.継承は、あるクラスが別のクラスを継承する性質です.クラスを作成するときは、すべてのクラスを最初から作成する必要はありません.コア属性を持つ他のクラスから継承できます.
class Person:
	eyes = 2
    nose = 1
    mouth = 1
    ears = 2
    arms = 2
    legs = 2
    
    def eat(self):
    	print("뇸뇸")
        
    def sleep(self):
    	print("콜콜")
        
    def talk(self):
    	print("쪼잘쪼잘")
Personとは普通の人のことです.目も鼻も口も四肢もあり、食べたり寝たりしておしゃべりをしています.
今度は学生というクラスを作ります.学生も人間なので、人間が持つ様々な性質や行為があり、Personという等級を継承し、目鼻口腕の再使用の面倒を減らす.
class Student(Person): # Person이라는 클래스를 상속받은 것. 저기 괄호에 넣어주면 상속받았단 것!
	def study(self):
    	print("공부!")
では、本物のStudioクラスがPersonクラスを継承しているかどうか、同じ性質を持っているかどうかを確認しなければなりません.
park = Person() # 클래스를 객체에 넣어주고
park.mouth # 객체.변수
>> 1

park.talk() # 객체.메서드 (요건 메서드 호출이니까 self필요없고)
>> "쪼잘쪼잘"

lee = Student() # Student 클래스 객체에 넣어주고
lee.mouth # 객체.변수
>> 1

lee.talk()
>> "쪼잘쪼잘"
ここでもう一つ作ろう!
lee.study() # 객체.메서드()
>> "공부!"
4.オブジェクト内のオブジェクト
オブジェクト内のオブジェクトをコードで記述しましょう.(ゾウを冷蔵庫に入れる方法^^)
class Fridge:
	def __init__(self):
    	self.isOpened = False
        self.foods = []
        
    def open(self):
    	self.isOpened = True
        print("냉장고 문열림")
        
    def put(self, thing):
    	if self.isOpened:
        	self.foods.append(thing)
            print("냉장고 속에 음식이 들어감")
        else:
        	print("냉장고 문 닫혀있어서 못넣음")
    
    def close(self):
    	self.isOPpened = False
        print("냉장고 문 닫음")
        
class Food:
	pass
isopenedという変数を作り、冷蔵庫の食べ物リストの食べ物を作ります.
冷蔵庫のドアを開けて、食べ物を入れて、ドアを閉める方法があります.
Fridge,Foodはクラスです.
import fridge
f = fridge.Fridge() # 냉장고 클래스의 객체로 f를 만들고
apple = fridge.Food() # 음식 클래스의 객체로 apple
elephant = fridge.Food() # 음식 클래스의 객체로 elephant 만들고
f.open() # 객체.메서드
>> "냉장고 문열림"
f.put(apple) # 객체.메서드(apple) -> thing이라는 파라미터안에 apple이 들어가는 것.
>> "냉장고 속에 음식이 들어감"
f.put(elephant)
>> "냉장고 속에 음식이 들어감"
冷蔵庫fの食べ物リストに何があるか見てみましょう.
f.foods
>>>[<fridge.Food instance at 007924AC>, <fridge.Food instance at 0079153C>]
冷蔵庫の対象に食べ物のリストがあります.食べ物リストには食べ物類のりんごと象の対象があります.
5.特別な方法
メソッドとは、クラスを作成しながら作成した関数で、defの後ろに表示されます.
作成方法を使用するには、オブジェクトを使用します.メソッド()と同じ形式で呼び出されます.
これらの基本的な方法を除いて、いくつかの特別な方法を理解しましょう.
Initメソッド(初期化)
class Book:
	def setData(self, title, price, author):
    	self.title = title
        self.price = price
        self.author = author
        
    def printData(self):
    	print("제목 :" , self.title)
        print("가격 :" , self.price)
        print("저자 :" , self.author)
        
    def __init__(self):
    	print("책 객체를 새로 만듦")
Bookクラス、setData()およびprintData()メソッド.
initという方法もあります初期化メソッドとも呼ばれます.
クラスのオブジェクトを作成するときに自動的に呼び出され、そのオブジェクトが持つさまざまな性質を決定します.
import bookstore
b = bookstore.Book() # 클래스를 b 객체에
>> "책 객체를 새로 만듦"
Book()クラスでオブジェクトを作成すると、すぐに初期化メソッドが実行されます.
b.setData('우리가 빛의 속도로 갈 수 없다면', '15,000원', '김초엽')
b.printData()
>> 제목 : 우리가 빛의 속도로 갈 수 없다면
>> 가격 : 15,000원
>> 저자 : 김초엽
def __init__(self, title, price, author):
	self.setData(title, price, author)
    print("책 객체를 새로 만듦")
オブジェクトを生成するときに、タイトル、価格、および作成者をパラメータとしてsetDataメソッドに渡します.
初期化方法では変数を直接使用しても構わないが,setDataメソッドは既に作成されているので理解が必要である.これからは、ブックオブジェクトを作成するときに、次のように3つのパラメータを渡す必要があります.
reload(bookstore)
b2 = bookstore.Book('농담', '20,000원', '밀란 쿤데라')
>> 책 객체를 새로 만듦
初期化方法をもう少し熟知する必要がある.概念は簡単ですが、なぜコードの中でよく知られていないように見えますか.もっと練習すべきだ.🤔
ソース:https://wikidocs.net/