Python でオブジェクト指向プログラミングを行う方法
Python はインタープリタ言語ですが、オブジェクト指向であり、オブジェクト プログラミングを実行できます。 Python でオブジェクト プログラミングを行う方法を学びましょう。
1. クラスを定義する方法
Python でオブジェクト指向プログラミングを行う前に、まずクラス、クラス オブジェクト、インスタンス オブジェクト、属性、関数、メソッドといういくつかの用語を理解しましょう。
1. オブジェクト指向とは
オブジェクト指向 (oop) は、世界のすべてをオブジェクトに抽象化することができ、すべてはオブジェクトで構成されます。プログラミングに応用され、オブジェクトをプログラムの基本単位として使用するプログラム開発方法です。
2. オブジェクト指向とプロセス指向の違い
プロセス指向の核心は、プロセスを使用してプログラムを設計するという言葉です。 -指向の手法は、組み立てラインの設計は機械的な考え方に似ています
長所: 複雑な問題が単純化され、合理化されます
短所: スケーラビリティが低い
主なアプリケーションシナリオには、Linux カーネル、git、および http サービスが含まれます
オブジェクト-プログラミングの核心は、機能 (変数) とスキル (関数) の組み合わせであるオブジェクトです。
利点: プログラムの拡張性が低いという問題を解決します
欠点: 制御性が低く、最終結果を予測できません
主なアプリケーションシナリオは、ニーズが頻繁に変化するソフトウェア、つまりユーザーと頻繁に対話するソフトウェアです
すべきこと注意: オブジェクト指向プログラミングはすべての問題を解決するわけではなく、スケーラビリティを解決するためにのみ使用されます。もちろん、今日のインターネット ソフトウェアでは、スケーラビリティが最も重要です
3. オブジェクトとクラスの概念
Python では、オブジェクトはすべて独自の属性、つまり特性を持つ必要があります。関数、つまりメソッド
Pythonでは、特徴は変数で表現され、関数は関数で表現されるので、オブジェクトは変数と関数の組み合わせです
そして、さまざまなオブジェクトから同じ特性、同じ機能を持つオブジェクトが抽出されますはクラスなので、クラスは一連のオブジェクトの共通の特性と機能の組み合わせです
クラスを定義しましょう。メソッドは関数の定義に似ています:
#定义一个中国人的类class Chinese:#共同的特征country='China'#共同的技能def talk(self):print('is talking Chinese')def eat(self):print('is eating Chinese food')
このようにして、次のようになります。注: 1. クラスを定義するには class キーワードを使用します
2. クラス名の最初の文字は通常大文字で、関数定義とは異なり、コロンの前に括弧は必要ありません
3. 関数とは異なり、クラスは定義フェーズでクラス内のコードを実行します
4. クラスには 2 つの属性があります。共通の特性はデータ属性と呼ばれ、共通の関数は関数属性と呼ばれます
このクラスのオブジェクト?インスタンス化:
p1=Chinese() p2=Chinese()
現実世界で何が起こっても、プログラムでは確かに最初にクラスがあり、次にオブジェクトがあると結論付けることができます
インスタンス化を通じて 2 つのオブジェクトを取得しました。はい、しかし、問題は、得られた 2 つのオブジェクトは同じ特性と機能を持っているということですが、すべてのオブジェクトが異なるという概念はまったく矛盾しています。実際、クラスを定義したときに、 __init__() 関数を定義するのを忘れていました。正しい定義方法は次のようになります:
#定义一个中国人的类class Chinese:#共同的特征country='China'#初始化def __init__(self,name,age): self.name=name #每个对象都有自己的名字self.age=age #每个对象都有自己的年龄#共同的技能def talk(self):print('is talking Chinese')def eat(self):print('is eating Chinese food')#实例化的方式产生一个对象p1=Chinese('zhang',18)
__init__ 関数を定義したときは、括弧内に 3 つのパラメーターがありましたが、呼び出しをインスタンス化するときは 2 つの値だけを渡しました。なぜエラーを報告しないのでしょうか。これは、self の機能は、オブジェクトをインスタンス化するときに、オブジェクト自体を __init__ 関数の最初のパラメータに自動的に渡すことであるためです。もちろん、self は単なる名前です。それを理解するために。
注意。この自動値転送メカニズムは、インスタンス化に加えて、クラス名
#引用类的数据属性print(Chinese.country) #China#引用类的函数属性# Chinese.talk()#TypeError: talk() missing 1 required positional argument: 'self'print(Chinese.talk) #<function Chinese.talk at 0x000001BC5F13D1E0>Chinese.talk('self') #is talking Chinese#增加属性Chinese.color='yellow'#删除属性del Chinese.color
変数を定義したり、関数を定義したりすると、メモリ内にメモリ空間が開かれ、定義された変数(データ属性)も存在します。クラス内の関数 (関数属性) には、.__dict__ メソッドを通じて表示できる名前空間もあります
p1=Chinese('zhang',18)print(Chinese.__dict__)#{'__module__': '__main__', 'country': 'China', '__init__': <function Chinese.__# init__ at 0x000002187F35D158>, 'talk': <function Chinese.talk at 0x000002187F35D1E0>, # 'eat': <function Chinese.eat at 0x000002187F35D268>, '__# dict__': <attribute '__dict__' of 'Chinese' objects>,# '__weakref__': <attribute '__weakref__' of 'Chinese' objects>, '__doc__': None}print(p1.__dict__)#{'name': 'zhang', 'age': 18}
p1=Chinese('zhang',18) p2=Chinese('li',19)print(Chinese.talk)#<function Chinese.talk at 0x000001B8A5B7D1E0>print(p1.talk) #<bound method Chinese.talk of <__main__.Chinese object at 0x000001B8A5B7BD68>>print(p2.talk) #<bound method Chinese.talk of <__main__.Chinese object at 0x000001B8A5B7BDA0>>
可以看到,并不是,他们的内存地址都不一样。而且注意bound method,是绑定方法
对象本身只有数据属性,但是Python的class机制将类的函数也绑定到对象上,称为对象的方法,或者叫绑定方法。绑定方法唯一绑定一个对象,同一个类的方法绑定到不同的对象上,属于不同的方法。我们可以验证一下:
当用到这个函数时:类调用的是函数属性,既然是函数,就是函数名加括号,有参数传参数
而对象用到这个函数时,对象没有函数属性,他是绑定方法,绑定方法怎么用呢,也是直接加括号,但不同的是,绑定方法会默认把对象自己作为第一个参数
class Chinese: country='China'def __init__(self,name,age): self.name=name self.age=age def talk(self):print('%s is talking Chinese'%self.name)def eat(self):print('is eating Chinese food') p1=Chinese('zhang',18) p2=Chinese('li',19) Chinese.talk(p1) #zhang is talking Chinesep1.talk() #zhang is talking Chinese
只要是绑定方法,就会自动传值!其实我们以前就接触过这个,在python3中,类型就是类。数据类型如list,tuple,set,dict这些,实际上也都是类,我们以前用的方法如l1.append(3),还可以这样写:l1.append(l1,3)
未完待续。。。
以上がPython でオブジェクト指向プログラミングを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonコードをSublimeテキストで実行するには、最初にPythonプラグインをインストールし、次に.pyファイルを作成してコードを書き込み、Ctrl Bを押してコードを実行する必要があります。コードを実行すると、出力がコンソールに表示されます。

Visual Studioコード(VSCODE)でコードを作成するのはシンプルで使いやすいです。 VSCODEをインストールし、プロジェクトの作成、言語の選択、ファイルの作成、コードの書き込み、保存して実行します。 VSCODEの利点には、クロスプラットフォーム、フリーおよびオープンソース、強力な機能、リッチエクステンション、軽量で高速が含まれます。

VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

メモ帳でPythonコードを実行するには、Python実行可能ファイルとNPPEXECプラグインをインストールする必要があります。 Pythonをインストールしてパスを追加した後、nppexecプラグインでコマンド「python」とパラメーター "{current_directory} {file_name}"を構成して、メモ帳のショートカットキー「F6」を介してPythonコードを実行します。
