レベル1
最初のTILレコード
曖昧な概念を再捉えましょう.
クラスを把握する前に,まずオブジェクト向けプログラミングについて理解する.
オブジェクト向けプログラミング(OOP)は、コンピュータプログラミングのモデルの一つであり、オブジェクトベースのプログラミングである.これは、必要なデータを抽象化し、状態と動作を持つオブジェクトを作成し、これらのオブジェクト間の有機的なインタラクションによって論理を組織するプログラミング方法です.
オブジェクト向けのプログラムを使用して、データを効率的に管理し、同じコードの重複を排除し、メンテナンスを容易にします.
クラス:オブジェクトのメタデータを作成するために、グループに属する属性(attribute)と動作(behavior)を変数とメソッドとして定義します.簡単に言えば、これは設計図であり、同じものを生成し続けることができると考えられる. 例えば、人の属性は氏名、年齢、性別、身長、体重、住所である.
方法は歩くこと、走ること、横になることなどで表現できます.
≪インスタンス(オブジェクト)|Instance(Objects)|oem_src≫:クラスで定義された実際のメモリに割り当てられた、実際のアプリケーションで使用されるデータ.つまり、レベルで作られた被造物.
このとき,同一クラスのオブジェクト間は互いに影響を及ぼさず,固有の性質を持つ.
クラスで作成されたオブジェクトもインスタンスと呼ばれます.では、オブジェクトとインスタンスの違いは何でしょうか.そう思いましょう.a=Cookie()というaが対象です.そしてaオブジェクトはCookieのインスタンスである.すなわち、インスタンスという語は、あるオブジェクト(a)があるクラス(Cookie)のオブジェクトであることを関係を主として説明するために用いられる.「aはインスタンス」よりも「aはオブジェクト」が適切であり、「aはCookieのオブジェクト」は「aはCookieのインスタンス」よりも適切である.
簡単な例を挙げる.
Pythonの「コンストラクション関数」とは、オブジェクトの生成時に自動的に呼び出されるメソッドのこと.
Pythonでは ソース
https://velog.io/@shchoice/java-oop-2
https://jeong-pro.tistory.com/95
JumptoPython,https://wikidocs.net/28
高速キャンパス、コード+アルゴリズムの授業
曖昧な概念を再捉えましょう.
Pythonクラス
クラスを把握する前に,まずオブジェクト向けプログラミングについて理解する.
オブジェクト向けプログラミング(OOP)は、コンピュータプログラミングのモデルの一つであり、オブジェクトベースのプログラミングである.これは、必要なデータを抽象化し、状態と動作を持つオブジェクトを作成し、これらのオブジェクト間の有機的なインタラクションによって論理を組織するプログラミング方法です.
オブジェクト向けのプログラムを使用して、データを効率的に管理し、同じコードの重複を排除し、メンテナンスを容易にします.
クラス:オブジェクトのメタデータを作成するために、グループに属する属性(attribute)と動作(behavior)を変数とメソッドとして定義します.簡単に言えば、これは設計図であり、同じものを生成し続けることができると考えられる.
方法は歩くこと、走ること、横になることなどで表現できます.
≪インスタンス(オブジェクト)|Instance(Objects)|oem_src≫:クラスで定義された実際のメモリに割り当てられた、実際のアプリケーションで使用されるデータ.つまり、レベルで作られた被造物.
このとき,同一クラスのオブジェクト間は互いに影響を及ぼさず,固有の性質を持つ.
クラスで作成されたオブジェクトもインスタンスと呼ばれます.では、オブジェクトとインスタンスの違いは何でしょうか.そう思いましょう.a=Cookie()というaが対象です.そしてaオブジェクトはCookieのインスタンスである.すなわち、インスタンスという語は、あるオブジェクト(a)があるクラス(Cookie)のオブジェクトであることを関係を主として説明するために用いられる.「aはインスタンス」よりも「aはオブジェクト」が適切であり、「aはCookieのオブジェクト」は「aはCookieのインスタンス」よりも適切である.
クラス、インスタンスの作成
class UserInfo:
def __init__(self, name):
self.name = name
def user_info_p(self):
print("Name: ", self.name)
user1 = UserInfo("Hyun")
# 네임스페이스: 객체를 인스턴스화 할 때 저장된 공간.
# 클래스 변수: 직접 사용가능, 객체보다 먼저 생성된다.
# 동일한 클래스로 만든 객체끼리는 서로 영향을 미치지 않으며 고유한 성격을 가지고있다.
# 인스턴스 변수: 객체마다 별도로 존재, 인스턴스 생성 후 사용.
Pythonでは
__init__
メソッドが生成された.オブジェクトを作成するときは、作成者に必要な値を同時に渡す必要があります.上記の例では、nameはuser 1と同様に「hyun」という値とともに作成する必要があります.自己理解
class SelfTest():
def func1(): # 클래스 메서드
print('func1 called')
def func2(self): # 인스턴스 메서드
print('func2 called')
self_test = SelfTest()
# self_test.func1() 오류
SelfTest.func1() # 클래스 변수는 직접 접근해야한다.
self_test.func2()
SelfTest.func2(self_test)
クラス変数、インスタンス変数
class WareHouse():
# 클래스 변수(self 없음)
stock_num = 0 # self가 없기 때문에 공동으로 공유한다. 여러 인스턴스에서
def __init__(self, name):
self.name = name
WareHouse.stock_num += 1
# 창고가 하나 생길때 마다 전체 재고를 1씩 추가해 준다.
user1 = WareHouse("Kim")
user2 = WareHouse("Park")
user3 = WareHouse("Lee")
print(WareHouse.__dict__) # stock_num : 3 인걸 확인할 수 있음
print(user1.name) # Kim
print(user1.stock_num) # 3
# 본인의 네임스페이스에 없으면 클래스 네임 스페이스에 가서 찾고 없으면 오류
print(WareHouse.__dict__)
stock num:3と確認できます.すなわち,クラス変数は共有される.https://velog.io/@shchoice/java-oop-2
https://jeong-pro.tistory.com/95
JumptoPython,https://wikidocs.net/28
高速キャンパス、コード+アルゴリズムの授業
Reference
この問題について(レベル1), 我々は、より多くの情報をここで見つけました https://velog.io/@chjy0202/TIL-1-클래스-classテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol