ホームページ  >  記事  >  バックエンド開発  >  初心者向けにまとめた Python の知識ポイント 3 つ目

初心者向けにまとめた Python の知識ポイント 3 つ目

coldplay.xixi
coldplay.xixi転載
2020-11-13 16:47:561824ブラウズ

Python ビデオ チュートリアル コラムでは、3 番目の Python ナレッジ ポイントを紹介します。

初心者向けにまとめた Python の知識ポイント 3 つ目

この記事は 3 つ目です。Python の基礎を築くための記事は全部で 4 つあります。

上の 2 つでデータ構造はほぼ解決しました。 Python で説明します。1 つの記事で説明しましょう。最も重要なクラスです。

7. オブジェクト指向プログラミング

すべてのものはオブジェクトであり、Python は確かにオブジェクト指向プログラミングをサポートしています。クラスとオブジェクトはオブジェクト指向プログラミングの 2 つの主要な側面であり、クラスは新しいオブジェクトを作成し、オブジェクトはこのクラスのインスタンスです。

オブジェクトはクラスの変数を使用できます。オブジェクトまたはクラスに属する変数をドメインと呼びます。オブジェクトはクラスに属する関数も使用できます。そのような関数はクラスメソッドと呼ばれます。ドメインとメソッドを総称してクラスと呼ぶこともできます。 プロパティ。

フィールドには 2 つのタイプがあります

  • インスタンスに属する
  • クラス自体に属する

これらはインスタンス変数と呼ばれ、クラスはそれぞれ変数です。

キーワード class を使用してクラスが作成されます。クラスのフィールドとメソッドは、インデントされたブロック内にリストされます。

クラスのメソッドには追加の最初のパラメータが必要ですが、このパラメータは呼び出されたときに値が割り当てられません。この特別な変数はオブジェクト自体を参照します。慣例により、その名前は self です。ジャワ。

クラス内の次の 2 つの特別なメソッドに注意する必要があります:

  • __init__ メソッド: このメソッドは、次のオブジェクトが作成されたときに呼び出されます。クラスが作成されます。 ; c のコンストラクターと同等、つまり、このクラスが呼び出されるとき、 __init__ メソッドが実行されます。

  • del__

    メソッド: このメソッドは、クラスのオブジェクトが破棄されるときに呼び出されます (c のデストラクターに相当します)。 del を使用してオブジェクトを削除する場合、__del__ メソッドも呼び出され、__del__ が最後に呼び出されます。

Python ではすべてのクラス メンバー (データ メンバーを含む) がパブリックです。Java にはプライベート クラスはありません。つまり、誰もが呼び出しクラスを持っています。書くのは非常に簡単ですが、 ただし、誰もが自由にリソースを割り当てたり、アクセスしたりできます。これはプロジェクトにとって確かに悪いことです。

ただし、Python クラスにはプライベート変数とプライベート メソッドがあります。これは例外です。使用されるデータ メンバーの先頭に二重アンダースコアが付いている場合、それはプライベート変数です。

このクラスをインスタンス化しましたが、アクセスできません。これは、多くの人が無視していることです。

例:

class public():
    _name = 'protected类型的变量'
    __info = '私有类型的变量'
    def _f(self):
        print("这是一个protected类型的方法")    def __f2(self):
        print('这是一个私有类型的方法')    def get(self):
        return(self.__info)
pub = public()# 先打印可以访问的print(pub._name)
pub._f()####结果如下####protected类型的变量
这是一个protected类型的方法# 打印下类 私有变量和私有方法print(pub.__info)
报错:'public' object has no attribute '__info'pub._f2()
报错:pub._f2()复制代码
ただし、プライベート プロパティとメソッドは同じクラス内で呼び出すことができます。

pub.get()#######'私有类型的变量'复制代码
上記は、多くの人が無視していることです。わかりませんが、次は Person クラス

   class Person():
    Count = 0
    def __init__(self, name, age):
        Person.Count += 1
        self.name = name
        self.__age = age
    
p = Person("Runsen", 20)

print(p.Count)# 1 说明我实例化,这个__init__方法就要执行print(p.name) #Runsenprint (p.__age) 
#AttributeError: Person instance has no attribute '__age'#私有变量访问不了,报错复制代码

8 を宣言させてください。継承

オブジェクト指向プログラミング (OOP)、英語の完全名: Object Oriented Programming、主要な機能の 1 つオブジェクト指向プログラミングの特徴は「継承」です。継承とは、元のクラスを書き直すことなく、既存のクラスのすべての機能を使用して拡張できる機能を指します。

相続は、実際にはこのように理解されており、父クラスと息子クラスを書いたということです。父にはお金がありますが、息子にはお金がないので、息子は父を継承し、父のお金を呼び出すことにしました。 (親クラスの変数とメソッド) 。

クラスを継承するには、基本的に以下の5つのメソッドを使用します。

8.1 親クラスの属性メソッドを直接呼び出します;

父親はお金を持っていますが、息子はお金を持っていないため、息子は父親のお金を使用します

class Father():
    def __init__(self):
        self.money= 1000 
    def action(self):
        print('调用父类的方法') 
class Son(Father):
    pass
 son=Son()     # 子类Son 继承父类Father的所有属性和方法son.action()  # 调用父类属性输出:调用父类的方法
son.money     # 调用父类属性输出:1000复制代码

8,2親クラスのプライベート属性メソッドを強制呼び出し;

お父さんが、息子がいつも私のお金を使っていると言うので、私的なお金を隠すことにしました。息子よ、super() を試してプライベート マネーを取得してください。ただし、ここで注意する必要があります。super()

オーバーライド メソッドである親クラスのプライベート プロパティ メソッドを強制的に呼び出します。継承できない場合、親クラスのプライベート属性メソッドの変数にアクセスできなくなり、息子はプライベートマネーを取得できなくなります。

class Father():
    __money  = 1000 #私有变量是继承不了
    
    def __action(self):  # 父类的私有方法
        money = 1000
        print('调用父类的方法') 
class Son(Father):
        
    def action(self):
        super()._Father__action()
        print(money) 
        
son=Son()
son.action() 

调用父类的方法
name 'money' is not defined复制代码

8.3 親クラスの属性メソッドをオーバーライドする;

突然、息子が金持ちであることが判明し、父親のお金ではなく自分のお金を使うことに決め、オーバーライドすることにしました。親クラスの属性メソッド。

class Father():
    def __init__(self):
        self.money = 0
    
    def action(self):
        print('调用父类的方法') 
class Son(Father):
    def __init__(self):
        self.money = 1000
      
    def action(self):
        print('子类重写父类的方法')
 
son=Son()     # 子类Son继承父类Father的所有属性和方法son.action()  # 子类Son调用自身的action方法而不是父类的action方法son.money     # 自己的1000复制代码

8.4 親クラスの __init__ メソッドを呼び出す

父親が __init__

にお金を入れた場合、息子が父親のお金を取得できるかどうかはプライベート変数ではありません、個人のお金ではありません、もちろん入手できます

スーパーを使わずに入手できるかどうか見てみましょう。

class Father():
    def __init__(self):
        self.money = 1000
 class Son(Father):
    def __init__(self):
        pass
    son=Son()
print(son.money)# 报错:'Son' object has no attribute 'money'复制代码
スーパーも使わないのはお金を取っているようなものです、お父さんと私を軽蔑しています。

class Father():
    def __init__(self):
        self.money = 1000
 class Son(Father):
    def __init__(self):
        super().__init__()        #也可以用 Father.__init__(self)  这里面的self一定要加上(上面两个相同)
        
        son=Son()
print(son.money) 

1000复制代码

8.5 親クラスの初期化プロセスでパラメータを継承する

時々、お父さんはお金を稼いで使う必要がありますが、これが初期化プロセスのパラメータです。息子はとても好奇心旺盛で、あなたのポケットにはあとどれくらいお金がありますか?

ここでは、最初に Earn_money と Spise_money を書き留めました

class Father():
    def __init__(self):
        self.earn_money=1000
        self.spend_money= -500
 class Son(Father):
    def __init__(self):
        super().__init__()        #也可以用 Father.__init__(self)  这里面的self一定要加上
        
    def add(self):
        return self.earn_money+self.spend_money
        
        
son=Son()
print(son.add())500复制代码
息子は、父親が十分なお金を持っていないことに気づき、こっそりお金を借りました。

class Father():
    def __init__(self,a,b):
        self.earn_money = a
        self.spend_money= b    def add(self):
        return self.a + self.b 
#调用父类初始化参数a,b并增加额外参数cclass Son(Father):
    def __init__(self,a,b,c=1000):  # c固定值
        Father.__init__(self,a,b)  
        self.son_money = c        
    def add(self):
        return self.earn_money+self.spend_money + self.son_money
        
   
        
son=Son(1000,-500)   # 所以c可以不用显示表达出来print(son.add())     # 调用子类add函数1500复制代码
上記は主にPythonクラスの継承と、親クラスの属性やメソッドの呼び出しの基本的な内容ですが、実際に自分でいくつかのケースを書いてみるとさらに理解が深まります。

9. 入出力

プログラムとユーザー間の対話には、主にコンソールとファイルを含む入出力の使用が必要です。コンソールの場合、入力と出力は次のように行うことができます。使用済み。 input(xxx) 入力 xxx、 次に、ユーザーの入力を読んで戻ります。 ###
In [1]: input()1Out[1]: '1'复制代码

10、文件输入/输出

可以使用file类打开一个文件,使用file的read、readline和write来恰当的读写文件。对文件读写能力取决于打开文件时使用的模式, 常用模式

  • 读模式("r")
  • 写模式("w")
  • 追加模式("a")

文件操作之后需要调用close方法来关闭文件。如果用with open就不用slose了。

还有r+,w+,a+

  • r:仅仅表示读入
  • r+:既可以读取还可以写入
  • w: 仅仅表示写入
  • w+:既可以读取还可以写入

但r+与w+不同的是,不会把原先存在txt中的东西清空,下面是他们的对比,反正尽量用a+,基本没什么错报出来。

描述 r+ w+ a+
当前文件不存在时文件 抛出异常 创建文件 创建文件
打开后原文件内容 保留 清空 保留
初始位置 0 0 文件尾
写入位置 标记位置 标记位置 写入时默认跳至文件尾

补充个例子吧:

test = '''\
This is a program about file I/O.
Author: Runsen
Date: 2020/3/31
'''f = open("test.txt", "w") 
f.write(test) 
f.close() 

f = open("test.txt") #默认rwhile True:
    line = f.readline()    if len(line) == 0:  
        break
    print(line)
f.close()######This is a program about file I/O.

Author: Runsen

Date: 2020/3/31复制代码

11、存储器

存储器,大家应该不知道。python提供一个标准的模块,成为pickle,使用它可以在一个文件中存储任何python对象,之后可以完整的取出来,这被称为持久地存储对象;还有另外一个模块成为cPickle,它的功能和pickle完全一样,只不过它是用c写的,要比pickle速度快(大约快1000倍)。

import pickle

datafile = "data.data"mylist = ["Runsen", "is", "20"]

f = open("test.txt", "wb+")
pickle.dump(mylist, f)
f.close()del mylist

f = open(datafile,'rb+')
mylist = pickle.load(f)

print(mylist)#["Runsen", "is", "20"]复制代码

12、异常

当程序中出现某些异常的状况时,异常就发生了。

python中可以使用try ... except 处理。

try:    print (1/0)except ZeropisionError as e:
    print(e)except:
    print( "error or exception occurred.")#integer pision or modulo by zero复制代码

相关免费学习推荐:python视频教程

以上が初心者向けにまとめた Python の知識ポイント 3 つ目の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.imで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。