この記事では、Python でのオブジェクト指向プログラミングについて簡単に説明します (コード例)。一定の参考値があるので、困っている友人は参考にしていただければ幸いです。
1. 最初のケース --- クラスを作成します
#__author:"吉" #date: 2018/10/27 0027 #function: # 设计类: ''' 类名:首字母大写,见名思意 属性:驼峰原则 行为:见名思意,驼峰法 说明:类不占空间,实例化对象占用空间! ''' # 格式,object是父类,超类 ''' 类名(object): 属性 行为 ''' class Peoson(object): name = 'zhanglei' age = 24 weight = 70 def run(self): print("跑!") def eat(self): print('吃')
2. クラスを使用してオブジェクトをインスタンス化します
#__author:"吉" #date: 2018/10/27 0027 #function: # 设计类: ''' 类名:首字母大写,见名思意 属性:驼峰原则 行为:见名思意,驼峰法 说明:类不占空间,实例化对象占用空间! ''' # 格式,object是父类,超类 ''' 类名(object): 属性 行为 ''' class Peoson(object): name = 'zhanglei' age = 24 weight = 70 def run(self): print("跑!") def eat(self): print('吃') def changeName(self,name): self.name = name # 实例化对象 ''' 格式:对象名= 类名(参数列表信息) ''' peoson1 = Peoson() print(peoson1.name,peoson1.age,peoson1.weight) print(peoson1.eat()) print(peoson1.run()) # 原理 ''' 变量是在栈区,对象是在堆区。 '''
3. オブジェクトのプロパティとメソッドへのアクセス
#__author:"吉" #date: 2018/10/27 0027 #function: # 设计类: ''' 类名:首字母大写,见名思意 属性:驼峰原则 行为:见名思意,驼峰法 说明:类不占空间,实例化对象占用空间! ''' # 格式,object是父类,超类 ''' 类名(object): 属性 行为 ''' class Peoson(object): name = 'zhanglei' age = 24 weight = 70 def run(self): print("跑!") def eat(self): print('吃') def changeName(self,name): self.name = name # 实例化对象 ''' 格式:对象名= 类名(参数列表信息) ''' peoson1 = Peoson() # 访问属性 ''' 变量是在栈区,对象是在堆区。 ''' print(peoson1.name,peoson1.age,peoson1.weight) peoson1.name = 'jiji' peoson1.age = 33 peoson1.weight = 90 print(peoson1.name,peoson1.age,peoson1.weight) peoson1.changeName('lala') print(peoson1.name,peoson1.age,peoson1.weight)
4. コンストラクター
#__author:"吉勇佳" #date: 2018/10/27 0027 #function: ''' 构造函数:__init__() 是在创建类的时候自动调用,不写出这个 构造函数的话,默认是一个空的构造函数什么页不执行。 ''' class Peoson(object): def __init__(self,name,age,height,weight): self.name = name self.age = age self.height = height self.weight = weight def run(self): print("跑!") def eat(self): print('吃') def changeName(self,name): self.name = name # 实例化对象 p1 = Peoson("jiyongjia",24,177,78) print(p1.name,p1.age,p1.height,p1.weight) p1.changeName('zhanglei') print(p1.name,p1.age,p1.height,p1.weight) # self 原理 ''' 1、哪个对象调用,self就代表那个对象。 '''
5. self.__class__() を使用してインスタンスとデストラクターを作成する
class Peoson(object): def __init__(self,name,age,height,weight): self.name = name self.age = age self.height = height self.weight = weight # 这里是析构函数 def __del__(self): print("我是析构函数") def run(self): print("跑!") def eat(self): print('吃') def changeName(self,name): self.name = name # 创建对象函数 self.__class__ 是代表类名的 def createObj(self,name): p=self.__class__(name,24,56,89) print(p.name,p.age,p.weight,p.height) # 即 执行p1的一个方法即可创建新的对象。 p1 = Peoson("丽丽",33,53,222) print(p1.name,p1.age,p1.height,p1.weight) p1.createObj("狗熊") ''' 输出:丽丽 33 53 222 狗熊 24 89 56 我是析构函数 我是析构函数 ''' print(p1.name)
6. __str__() と __repr__() の比較
#''' 重写 __str__() str方法是给用户用的,用于返回用户需要的结果信息、 __repr__() 如果换成__repr__()是得到与str相同的结果。是在黑屏终端直接敲对象名再回车的方法 注意:在没有str方法但是有repr的时候,repr 就相当于str,只是repr用于黑屏终端 ''' class Peoson(object): def __init__(self,name,age,height,weight): self.name = name self.age = age self.height = height self.weight = weight # 这里是析构函数 def __del__(self): print("我是析构函数") def run(self): print("跑!") def eat(self): print('吃') def changeName(self,name): self.name = name # 创建对象函数 self.__class__ 是代表类名的 def createObj(self,name): p=self.__class__(name,24,56,89) print(p.name,p.age,p.weight,p.height) # 如果换成__repr__()是得到相同的结果。是在黑屏终端直接敲对象名再回车的方法 def __str__(self): pass # return "这里是str" # return self.name #返回多个值的话用如下 return "%s-%d-%d" % (self.name,self.age,self.weight) # 如果要打印出所有的属性信息呢? p1 = Peoson("嘉嘉",44,222,336) # 不写def __str__()方法的时候,打印出的是该对象的地址信息 print(p1) ''' 输出:<__main__.peoson> ''' # 写了__str__()函数是 打印出的自己需要返回的信息数据,此时p1等价于p1.__str__() print(p1)</__main__.peoson>
7. オブジェクト指向の宿題の演習:
銃の設計の弾丸のデザインでは、一度に 1 発の弾丸が欠けています。弾丸がない場合は、撃てないというメッセージが表示されます。
#__author:"吉" #date: 2018/10/27 0027 #function: # 枪设计子弹 设计一次少一个子弹,没子弹了提示无法射击 class Gun(object): def __init__(self,name,bulletNum): self.name = name self.bulletNum = bulletNum def shot(self): self.bulletNum =self.bulletNum - 1 if self.bulletNum+1 != 0: print("此枪型号是:%s,此次射击成功!子弹减少1发,余量为:%d" %(self.name,self.bulletNum)) else: print("*************射击失败,子弹数为0.已经为您子弹加弹5发!请重新射击!**************") self.bulletNum = 5 gun = Gun("AK47",5) # 射击敌人 gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() gun.shot() ''' 输出: 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:4 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:3 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:2 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:1 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:0 *************射击失败,子弹数为0.已经为您子弹加弹5发!请重新射击!************** 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:4 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:3 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:2 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:1 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:0 *************射击失败,子弹数为0.已经为您子弹加弹5发!请重新射击!************** 此枪型号是:AK47,此次射击成功!子弹减少1发,余量为:4 '''
8. 外部からはアクセスまたは変更できないプライベート属性を作成する方法
#1 外部から変更できないプライベート属性を指定します。つまり、内部に 2 つのアンダースコアを追加します。 __money
#2 など、属性の前に付けます。 Python では、前に 2 つのアンダースコアが付いた特定のプロパティのみがプライベート プロパティと呼ばれますが、__money__ は特別プロパティとは呼ばれません。
#3 _money はプライベート属性ではありませんが、そのような変数を見た場合は、慣例によりプライベートとして扱う必要があります。それは本質的にプライベートではなく、アクセス可能です。
# 指定私有属性,在外部无法更改:即在属性前加两个下划线 如__money class Person(object): def __init__(self,name,age,height,weight,money): self.name = name self.age = age self.height = height self.weight = weight self.__money= money def run(self): print("跑!") def eat(self): print('吃') def changeName(self,name): self.name = name # 创建对象函数 self.__class__ 是代表类名的 def createObj(self,name): p=self.__class__(name,24,56,89,10000) print(p.name,p.age,p.weight,p.height,p.__money) # 即 执行p1的一个方法即可创建新的对象。 p1 = Person("丽丽",33,53,222,20000) print(p1.name,p1.__money) #此处出错,在外部无法访问私有
外部からアクセスしたい場合は、プライベート プロパティをメソッドに記述し、そのメソッドを呼び出してプライベート プロパティにアクセスします。例:
def run(self): print("跑!") print("工资",self.__money)
概要: プライベート属性にアクセスまたは変更する場合、変更とアクセスは 2 つの固定メソッドで実行でき、同時にメソッド内でデータをフィルタリングできます。
# 对于处理私有属性的方法---设置值的方法 def SetMoney(self,money): if money<p># 実際、__money にアクセスできない理由は、Python がプライベート属性を _person__money に変更したためです。</p><p># つまり、__money にはまだアクセスできます。ただし、このような方法でアクセスするのではなく、ルールに従ってください。</p><pre class='brush:php;toolbar:false;'>p1._Person__money = 70 print(p1.GetMoney())
上で述べたように、プライベート属性は引き続き変更できます。
rree以上がPython でのオブジェクト指向プログラミングに関する簡単な説明 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonArraysSupportVariousoperations:1)SlicingExtractsSubsets、2)Appending/ExtendingAdddesements、3)inSertingSelementSatspecificpositions、4)remvingingDeletesements、5)sorting/verversingsorder、and6)listenionsionsionsionsionscreatenewlistsebasedexistin

numpyarraysAressertialentionsionceivationsefirication-efficientnumericalcomputations andDatamanipulation.theyarecrucialindatascience、mashineelearning、物理学、エンジニアリング、および促進可能性への適用性、scaledatiencyを効率的に、forexample、infinancialanalyyy

UseanArray.ArrayOverAlistinPythonは、Performance-criticalCode.1)homogeneousdata:araysavememorywithpedelements.2)Performance-criticalcode:Araysofterbetterbetterfornumerumerumericaleperations.3)interf

いいえ、notallistoperationSaresuptedbyarrays、andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorintorintorinsertizizing、whosimpactsporformance.2)リスト

toaccesselementsinapythonlist、useindexing、negativeindexing、slicing、oriteration.1)indexingstartsat0.2)negativeindexingAcsesess.3)slicingextractStions.4)reterationSuseSuseSuseSuseSeSeS forLoopseCheckLentlentlentlentlentlentlenttodExeror。

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

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

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









