この記事は 3 つ目です。Python の基礎を築くための記事は全部で 4 つあります。
上の 2 つでデータ構造はほぼ解決しました。 Python で説明します。1 つの記事で説明しましょう。最も重要なクラスです。
すべてのものはオブジェクトであり、Python は確かにオブジェクト指向プログラミングをサポートしています。クラスとオブジェクトはオブジェクト指向プログラミングの 2 つの主要な側面であり、クラスは新しいオブジェクトを作成し、オブジェクトはこのクラスのインスタンスです。
オブジェクトはクラスの変数を使用できます。オブジェクトまたはクラスに属する変数をドメインと呼びます。オブジェクトはクラスに属する関数も使用できます。そのような関数はクラスメソッドと呼ばれます。ドメインとメソッドを総称してクラスと呼ぶこともできます。 プロパティ。
フィールドには 2 つのタイプがあります
これらはインスタンス変数と呼ばれ、クラスはそれぞれ変数です。
キーワード class
を使用してクラスが作成されます。クラスのフィールドとメソッドは、インデントされたブロック内にリストされます。
クラスのメソッドには追加の最初のパラメータが必要ですが、このパラメータは呼び出されたときに値が割り当てられません。この特別な変数はオブジェクト自体を参照します。慣例により、その名前は self です。ジャワ。
クラス内の次の 2 つの特別なメソッドに注意する必要があります:
__init__
メソッド: このメソッドは、次のオブジェクトが作成されたときに呼び出されます。クラスが作成されます。 ; c のコンストラクターと同等、つまり、このクラスが呼び出されるとき、 __init__ メソッドが実行されます。
del__
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()#######'私有类型的变量'复制代码
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'#私有变量访问不了,报错复制代码
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复制代码
お父さんが、息子がいつも私のお金を使っていると言うので、私的なお金を隠すことにしました。息子よ、
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复制代码
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复制代码
父親が
__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复制代码
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复制代码
In [1]: input()1Out[1]: '1'复制代码
可以使用file类打开一个文件,使用file的read、readline和write来恰当的读写文件。对文件读写能力取决于打开文件时使用的模式, 常用模式
文件操作之后需要调用close方法来关闭文件。如果用with open就不用slose了。
还有r+,w+,a+
但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复制代码
存储器,大家应该不知道。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"]复制代码
当程序中出现某些异常的状况时,异常就发生了。
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 サイトの他の関連記事を参照してください。