[Python] Object, Class


# 객체 지향
△個人整理に用いる.

  • class, object

  • quadrangleクラス
  • height
  • color
  • width

  • instance = class()

  • クラスには属性とメソッドがあります
  • Python methodは常にselfを最初のパラメータとして使用する
  • パラメータが不要な場合はself
  • を使用
  • クラスのattributeが内部アクセスしている場合self.attfibute名でアクセス
  • オブジェクト向け構文(継承)


    継承


  • 抽象化(抽象):複数のクラスで繰り返されるプロパティ;メソッドをベースクラスとして作成する

  • 継承(継承):基本クラスの汎用機能を継承し、他の部分のみを追加または変更します.
  • 親、子、...

  • 繰り返し使用可能なコードです.汎用機能では、基本クラスコードを変更するだけです.

  • 親が2つ以上ある場合は、マルチ継承と呼ばれます.
  • class Car:
        def __init__(self, name):
            self.name = name
        
        def get_info(self):
            print(self.name)
        
    class ElectronicCar(Car):
        def get_info(self):
            print(self.name , " Electronic")
    
    class GasolineCar(Car):
        def get_info(self):
            print(self.name , " Gasoline")
    
            
    
    test_car = ElectronicCar("pingping")
    hello_car = GasolineCar("pingping")
    
    test_car.get_info()
    hello_car.get_info()

  • メソッドオーバーライド:オーバーライド、既存の機能を新しい機能として再定義

  • issubclass,isinstance→内蔵関数

  • Init:作成者

  • super
    子クラスで親クラスのメソッドを呼び出す場合に使用します.
    super().親クラス名のメソッド名
  • class Person:
    		def work(self):
    				print('work hard')
    
    class Student(Person):
    		def work(self):
    				print('Study Hard')
    
    		def parttime(self):
    				super().work()
  • self
  • 現在のオブジェクトを表す
  • self.メソッド名または属性名を呼び出します.
  • クラスのプロパティとメソッド


    1.クラス変数とインスタンス変数(さらに属性を区別)


  • クラス変数:クラス定義のメソッド以外の変数
  • このクラスを使用するすべての人が使用する共通変数
  • クラス変数は、クラス内、クラス外の「クラス名」です.変数名

  • インスタンス変数:クラス定義でメソッドで使用する場合「self」.変数名(変数名など)
  • オブジェクトごとに異なる値
  • クラス内部はselfです.インスタンス変数名を使用して、クラス以外のオブジェクト名にアクセスします.インスタンス変数名でアクセス

  • クラス変数、作成者、インスタンス変数、クラス変数アクセス、インスタンス変数アクセス、...

  • instance, static, class method

  • instance method:オブジェクトで呼び出す(これまでself.メソッド名)
  • メソッドを呼び出すオブジェクトにのみ影響
  • アクセス可能オブジェクト属性
  • static method:オブジェクトとは独立して論理的にクラスに含まれる方法
  • selfパラメータが存在しない
  • オブジェクト属性にアクセスできませんでした.
  • 静的メソッド@staticmethodという名前のDecorator
  • をメソッドの前に追加する必要があります.
  • クラス名.静的メソッド名orオブジェクト名.両方の静的メソッドは、
  • を呼び出すことができます.
    class Figure:
        # 생성자 (Initializer)
        def __init__(self, width, height):
            self.width = width
            self.height = height
        
        # 메서드
        def clac_area(self):
            return self.width * self.height
        
        # 정적 메서드 (Figure 에 너비와 높이가 같은 도형은 정사각형임을 알려주는 기능)
        @staticmethod
        def is_square(rect_width, rect_height):
            if rect_width == rect_height:
                print("square")
            else:
                print('Not square')
    
    figure1 = Figure(2, 3)
    figure1.is_square(5, 5)
    
    Figure.is_square(4, 2) 

    class method:クラスで呼び出す

  • selfパラメータ代替clsパラメータ
  • クラス変数はアクセス可能、cls.クラス変数名でアクセスできますが、オブジェクト属性/メソッド
  • にアクセスできません.
  • classerメソッド@classmethodという名前のDecorator
  • をメソッドの前に追加
  • クラス名.クラス法名orオブジェクト名.どちらの方法も使用可能
  • class Figure:
        # 생성자 (Initializer)
        def __init__(self, width, height):
            self.width = width
            self.height = height
        
        # 메서드
        def clac_area(self):
            return self.width * self.height
        
    		# 클래스 메서드
    		@classmethod
    		def print_count(cls):
    				return cls.count
    class Figure:
        @classmethod
        def set_name(cls, name):
            cls.name = name
        
    class Circle(Figure):
        pass
    
    # 범위가 classmechod는 해당 클래스 안이다. 그래서 Circle set_name을 호출하면 바뀌지 않음
    
    # staticmethod : 아예 별개의 함수
    # classmethod  : 해당 클래스만을 범위로 한다.
    
    Figure.set_name('Figure')
    print(Figure.name, Circle.name)
    
    Circle.set_name('Circle')
    print(Figure.name, Circle.name)
  • ソース:残りの符号化されていない