Pythonのクラスとは何ですか

Jun 24, 2019 am 11:25 AM
python

Pythonのクラスとは何ですか

Python のクラスとは何ですか?

は、カテゴリまたはタイプの同義語と見なすことができます。すべてのオブジェクトは特定のクラスに属しており、そのクラスのインスタンスと呼ばれます。

例: Bird は「bird」のインスタンスです。これは、多くのサブクラスを持つ単なる一般的な (抽象) クラスです。あなたが見ている鳥は、サブクラス「ヒバリ」に属している可能性があります。 「鳥」はすべての鳥の集合であり、「ヒバリ」はその一部であると考えてください。オブジェクトが属するクラスが別のオブジェクトが属するクラスのサブセットである場合、前者は後者のサブクラスと呼ばれます。したがって、「ヒバリ」は「鳥」のサブクラスであり、「鳥」は「ヒバリ」です。 "bird" の

#サブクラスの定義は、さらにメソッドを定義するプロセスです。

クラスを作成します

>>> class Person:    def setName(self,name):
        self.name=name    def getName(self):        return self.name    def greet(self):        print "Hello,world! I'm %s" % self.name        
>>> foo=Person()>>> bar=Person()>>> foo.setName('Nsds')>>> bar.setName('Ysdy')>>> foo.greet()
Hello,world! I'm Nsds>>> bar.greet()
Hello,world! I'm Ysdy
ログイン後にコピー

foo の setName を呼び出すときgreet 関数を使用すると、foo は自動的に自分自身を最初のパラメーターとして関数に渡すため、self という名前が付けられます。 self がないと、メンバー メソッドはプロパティを操作するオブジェクト自体にアクセスできません。

プロパティは外部からアクセスできます:

>>> foo.name'Nsds'>>> bar.name='Yoda'>>> bar.greet()
Hello,world! I'm Yoda
ログイン後にコピー

プロパティ、関数、メソッド

self パラメータは実際にはメソッドと関数の違いです。メソッドは最初のパラメータを対応するインスタンスにバインドするため、このパラメータを指定する必要はありません。したがって、プロパティを通常の関数にバインドできるため、特別な自己パラメータはありません:

(特性はオブジェクト内の変数です。オブジェクトの状態はそのプロパティによって記述されます。オブジェクトのメソッドを使用できます。特性を変更し、オブジェクトの外部から特性に直接アクセスします)

>>> class Class:    def method(self):        print 'I have a self!'

        >>> def function():    print "I don't...">>> s=Class()>>> s.method()
I have a self!>>> s.method=function>>> s.method()
I don't...
ログイン後にコピー

変数birdsong参照は、メソッドbird.singにバインドされるか、selfパラメータにアクセスします(クラスの同じインスタンスにバインドされたままです)。

>>> class Bird:
    song='Squaawk'
    def sing(self):        print self.song        
>>> bird=Bird()>>> bird.sing()
Squaawk>>> birdsong=bird.sing>>> birdsong()
Squaawk
ログイン後にコピー

名前の前に二重アンダースコアを追加すると、メソッドまたは機能がプライベート (外部からアクセスできなくなります) になる可能性があります。

>>> class Secretive:    def __inaccessible(self):        print "Bet you can't see me..."
    def accessible(self):        print "The secret message is:"
        self.__inaccessible()        
>>> s=Secretive()>>> s.__inacessible()

Traceback (most recent call last):
  File "<pyshell#182>", line 1, in <module>
    s.__inacessible()
AttributeError: &#39;Secretive&#39; object has no attribute &#39;__inacessible&#39;>>> s.accessible()
The secret message is:
Bet you can&#39;t see me...
ログイン後にコピー

クラスの内部定義では、二重アンダースコアで始まる名前はすべて Is " です。翻訳済み」を、先頭に 1 つのアンダースコアとクラス名を付けた形式に変換します。

>>> Secretive._Secretive__inaccessible<unbound method Secretive.__inaccessible>
>>> s._Secretive__inaccessible()
Bet you can&#39;t see me...
ログイン後にコピー

クラスの名前空間

クラスを定義する場合、class ステートメントにあるすべてのコードは特別な名前空間にあります。 --- クラスの名前空間。この名前空間には、クラスのすべてのメンバーがアクセスできます。

クラスの定義は実際には実行コード ブロックです

>>> =+=1

        
>>> m1=>>>>>>1
>>> m1.members=2
>>>2
>>> m2=>>>>>>2
>>>>>>3
>>>2
>>>
ログイン後にコピー

新しいメンバーの値は m1 の特性に書き込まれ、クラス スコープ内の変数を保護します

Super class

>>> class Filter:    def init(self):
        self.blocked=[]    def filter(self,sequence):        return [x for x in sequence if x not in self.blocked]    
>>> class SPAMFilter(Filter):    def init(self):
        self.blocked=[&#39;SPAM&#39;]        
>>> f=Filter()>>> f.init()>>> f.filter([1,2,3])
[1, 2, 3]>>> s=SPAMFilter()>>> s.init()>>> s.filter([&#39;SPAM&#39;,&#39;SPAM&#39;,&#39;egg&#39;,&#39;name&#39;,&#39;ff&#39;])
[&#39;egg&#39;, &#39;name&#39;, &#39;ff&#39;]
ログイン後にコピー

継承、スーパークラス

>>> class Filter:    def init(self):
        self.blockes=[]    def filter(self,sequence):        return [x for x in sequence if x not in self.blocked]    
>>> class S(Filter):    def init(self):
        self.blocked=[&#39;s&#39;]        
>>> f=Filter()>>> f.init()>>> f.filter([1,2,3])
ログイン後にコピー

複数のスーパークラス

最初に継承されるクラスのメソッドは、後で継承されるクラスのメソッドをオーバーライドします

>>> class C():    def calculate(self,expression):
        self.value=eval(expression)        
>>> class Talker():    def talk(self):        print &#39;Hi,my value is&#39;,self.value        
>>> class TalkingCalculator(C,Talker):    pass>>> tc=TalkingCalculator()>>> tc.calculate(&#39;1+2*3&#39;)>>> tc.talk()
Hi,my value is 7
ログイン後にコピー

関連の推奨: 「Python チュートリアル

以上がPythonのクラスとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

Debian Readdirが他のツールと統合する方法 Debian Readdirが他のツールと統合する方法 Apr 13, 2025 am 09:42 AM

DebianシステムのReadDir関数は、ディレクトリコンテンツの読み取りに使用されるシステムコールであり、Cプログラミングでよく使用されます。この記事では、ReadDirを他のツールと統合して機能を強化する方法について説明します。方法1:C言語プログラムを最初にパイプラインと組み合わせて、cプログラムを作成してreaddir関数を呼び出して結果をinclude#include#include inctargc、char*argv []){dir*dir; structdireant*entry; if(argc!= 2){(argc!= 2){

Pythonと時間:勉強時間を最大限に活用する Pythonと時間:勉強時間を最大限に活用する Apr 14, 2025 am 12:02 AM

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

debian opensslでHTTPSサーバーを構成する方法 debian opensslでHTTPSサーバーを構成する方法 Apr 13, 2025 am 11:03 AM

DebianシステムでHTTPSサーバーの構成には、必要なソフトウェアのインストール、SSL証明書の生成、SSL証明書を使用するWebサーバー(ApacheやNginxなど)の構成など、いくつかのステップが含まれます。 Apachewebサーバーを使用していると仮定して、基本的なガイドです。 1.最初に必要なソフトウェアをインストールし、システムが最新であることを確認し、ApacheとOpenSSL:sudoaptupdatesudoaptupgraysudoaptinstaをインストールしてください

DebianのGitlabのプラグイン開発ガイド DebianのGitlabのプラグイン開発ガイド Apr 13, 2025 am 08:24 AM

DebianでGitLabプラグインを開発するには、特定の手順と知識が必要です。このプロセスを始めるのに役立つ基本的なガイドを以下に示します。最初にgitlabをインストールすると、debianシステムにgitlabをインストールする必要があります。 GitLabの公式インストールマニュアルを参照できます。 API統合を実行する前に、APIアクセストークンを取得すると、GitLabのAPIアクセストークンを最初に取得する必要があります。 gitlabダッシュボードを開き、ユーザー設定で「アクセストーケン」オプションを見つけ、新しいアクセストークンを生成します。生成されます

Apacheとは何ですか Apacheとは何ですか Apr 13, 2025 pm 12:06 PM

アパッチはインターネットの背後にあるヒーローです。それはWebサーバーであるだけでなく、膨大なトラフィックをサポートし、動的なコンテンツを提供する強力なプラットフォームでもあります。モジュラー設計を通じて非常に高い柔軟性を提供し、必要に応じてさまざまな機能を拡張できるようにします。ただし、モジュール性は、慎重な管理を必要とする構成とパフォーマンスの課題も提示します。 Apacheは、高度にカスタマイズ可能で複雑なニーズを満たす必要があるサーバーシナリオに適しています。

Apacheはどの言語に書かれていますか? Apacheはどの言語に書かれていますか? Apr 13, 2025 pm 12:42 PM

ApacheはCで書かれています。言語は、速度、安定性、移植性、直接ハードウェアアクセスを提供し、Webサーバーの開発に最適です。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

See all articles