Pythonでは、クラスがclass
キーワードに続いてクラスの名前を使用して定義されます。クラス内で、属性とメソッドの両方を定義できます。
属性は、クラスのインスタンスに関連付けられたデータを保存する変数です。これらは、クラス本体(クラス属性)または__init__
メソッド(インスタンス属性)などのメソッド内で直接定義できます。 __init__
メソッドは、クラスのインスタンスが作成されたときに呼び出される特別な方法です。一般に、クラスの属性を初期化するために使用されます。
クラス内の属性を定義する例は次のとおりです。
<code class="python">class Person: # Class attribute species = "Homo sapiens" # Instance attribute defined in the __init__ method def __init__(self, name, age): self.name = name self.age = age</code>
方法は、クラスの動作を定義するクラス内で定義された関数です。クラスの属性にアクセスし、それらの操作を実行できます。メソッドは通常の機能と同様に定義されますが、クラス本体内にインデントされています。
クラスでメソッドを定義する例は次のとおりです。
<code class="python">class Person: def __init__(self, name, age): self.name = name self.age = age # Method to introduce the person def introduce(self): return f"My name is {self.name} and I am {self.age} years old."</code>
この例では、 introduce
、人を紹介する文字列を返す方法です。
Pythonには、クラス内で定義できる属性には、インスタンス属性とクラス属性が2つあります。
インスタンス属性は、クラスの各インスタンスに固有です。 self
キーワードを使用して、 __init__
メソッドまたはクラスのその他のメソッド内で定義されます。クラスの各インスタンスは、インスタンス属性に対して異なる値を持つことができます。
例えば:
<code class="python">class Person: def __init__(self, name): self.name = name # Instance attribute person1 = Person("Alice") person2 = Person("Bob") print(person1.name) # Outputs: Alice print(person2.name) # Outputs: Bob</code>
クラスの属性は、クラスのすべてのインスタンス間で共有されます。それらは、どの方法以外でも、クラス本体で直接定義されます。クラス属性の変更は、クラスのすべてのインスタンスに影響します。
例えば:
<code class="python">class Person: species = "Homo sapiens" # Class attribute def __init__(self, name): self.name = name person1 = Person("Alice") person2 = Person("Bob") print(person1.species) # Outputs: Homo sapiens print(person2.species) # Outputs: Homo sapiens Person.species = "New Species" print(person1.species) # Outputs: New Species print(person2.species) # Outputs: New Species</code>
この例では、 species
Person
クラスのすべてのインスタンスで共有されるクラス属性です。
継承は、オブジェクト指向プログラミングの基本的な概念であり、クラス(サブクラスまたは派生クラスと呼ばれる)が別のクラス(スーパークラスまたはベースクラスと呼ばれる)の属性とメソッドを継承することを可能にします。これにより、コードの再利用と、既存のクラスに基づいてより特定の種類のオブジェクトを作成できます。
Pythonで継承を使用するには、サブクラス定義のクラス名の後に括弧内にスーパークラスを指定します。これが例です:
<code class="python">class Animal: def __init__(self, species): self.species = species def make_sound(self): pass # This method is intended to be overridden by subclasses class Dog(Animal): def __init__(self, name): super().__init__("Canis familiaris") # Call the __init__ method of the superclass self.name = name def make_sound(self): return "Woof!" class Cat(Animal): def __init__(self, name): super().__init__("Felis catus") # Call the __init__ method of the superclass self.name = name def make_sound(self): return "Meow!"</code>
この例では、 Dog
とCat
はAnimal
のサブクラスです。それらはspecies
属性を継承し、 make_sound
メソッドをオーバーライドして特定の動作を提供できます。
また、継承を使用して、より複雑なクラスの階層を作成し、複数の継承を実装することもできます。この場合、クラスは複数のスーパークラスから継承できます。
Pythonクラス内の方法を効果的に整理することは、読みやすさと保守性にとって重要です。ここにいくつかのベストプラクティスがあります:
calculate
、 update
、 fetch
)を起動し、メソッドが行うことについて具体的にします。方法の順序:
__init__
、 __str__
、 __repr__
などの特別な方法から始めます。_
で始まる_)を含めます。__
から始まるもの)を含めます。よく組織されたクラスの例は次のとおりです。
<code class="python">class BankAccount: def __init__(self, account_number, balance=0): self.account_number = account_number self.balance = balance def deposit(self, amount): if amount > 0: self.balance = amount return True return False def withdraw(self, amount): if 0 0 def __str__(self): return f"Account {self.account_number}: Balance = ${self.balance}"</code>
この例では、特別な方法が最初( __init__
、 __str__
)に続き、パブリックメソッド( deposit
、 withdraw
、 get_balance
)、最後に保護された方法( _validate_transaction
)が続きます。各方法は簡潔で、明確な目的があります。
以上がPythonクラスで属性とメソッドをどのように定義しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。