Python之面向對象和類

一.類

1.類的定義:

????????????????class 類名:

???????????????????????“”“注釋 ”“”

????????????????????????pass

2.實例的創建:

實例 = 類名(parameterlist)
parameterlist:定義類時__init__()方法的參數,如果該方法只有一個self參數,parameterlist可以省略

class Goose():"""定義了鵝類"""passgoose =  Goose()
print(goose)#<__main__.Goose object at 0x00000229213C6900>

3.創建類的構造函數方法:__init__()方法

????????定義類時,通常會包含一個__init__()方法。該方法是構造函數方法,每當創建一個類的新實例時,Python都會自動執行它。
1.__init__()方法用來初始化新創建對象,在一個對象被創建以后會立即調用。
2. __init__()方法必須包含一個self參數并且必須是第一個參數self參數是一個指向實例本身的引用,用于訪問類中的屬性和方法。(相當于JAVA中的this)

? ? ? ?3.當__init__()方法只有一個參數時,在創建類的實例時,不需要指定實際參數。
4.__init__()方法的名稱是以兩個連續下劃線開頭和結尾,這是一種約定,用于區分Python默認方法和普通方法。

????????5._init_()方法可以分為無參構造方法和有參構造方法。當使用無參構造方法創建對象時,所有對象的屬性都有相同的初始值;當使用有參構造為法創建對象時,對象的屬性可以有不同的初始值;

????????6.如果你寫多個構造方法,但是你在調用的時候,后寫的構造方法會取代前面的構造方法(無論這兩者參數上是否有區別),這點與JAVA不一樣,所以一般一個類只有一個構造方法。

????????7.一般來說,構造方法里面寫初始化內容

class Goose():def __init__(self):print ("self:",self) #self: <__main__.Goose object at 0x0000022CD8766900>print("type of self:",type(self))#type of self: <class '__main__.Goose'>print("我是鵝類,我會自動執行該語句")           
g=Goose()

在__init__()方法中,除了self參數外,還可以自定義一些參數,參數間使用逗號“,”進行分隔。

class Goose:'''鵝類'''def __init__(self,beak,wing,claw):print("我是鵝類!我有以下特征:")print(beak)print(wing)print(claw)
beak_1 = "喙的基部較高,長度和頭部的長度幾乎相等"
wing_1 = "翅膀長而尖"
claw_1 = "爪子是蹼壯的"
wildGoose = Goose(beak_1,wing_1,claw_1)

當然,也可以不用構造函數(一般不推薦這樣)

class Rect1():def getPeri(self,a,b):print("周長為:",(a+b)*2)def getArea(self,a,b):print("面積為:",a*b)
r1=Rect1()
r1.getPeri(3,4)
r1.getArea(3,4)
print(r1.__dict__)class Rect2():def __init__(self,a,b):self.a=aself.b=bdef getPeri(self):print("周長為:",(self.a+self.b)*2)def getArea(self):print("面積為:",self.a*self.b)
r2=Rect2(5,6)
r2.getPeri()
r2.getArea()
print(r2.__dict__)

二.類的成員

1.類的成員,靜態定義

定義屬性并訪問
數據成員是指在類中定義的變量,即屬性,根據定義位置,又可以分為類屬性和實例屬性。
① 類屬性
類屬性是指定義在類中,并且在函數體外的屬性。
類屬性可以在類的所有實例之間共享值,也就是在所有實例化的對象中公用。
類屬性可以通過類名稱或者實例名訪問。

class Goose:'''鵝類'''neck = "脖子較長"wing = "振翅頻率高"leg = "腿位于身體的中心支點,行走自如"def __init__(self):print("我屬于鵝類!我有以下特征:")print(self.neck)print(self.wing)print(self.leg)
geese = Goose()

2.動態添加屬性

在Python中除了可以通過類名稱訪問類屬性,還可以動態地為類和對象添加屬性

class Goose:'''鵝類'''neck = "脖子較長"wing = "振翅頻率高"leg = "腿位于身體的中心支點,行走自如"def __init__(self):print("我屬于鵝類!我有以下特征:")print(Goose.neck)print(Goose.wing)print(Goose.leg)geese = Goose()
#在類外,動態的為對象添加屬性
geese.beak = "喙的基部較高,長度和頭部的長度幾乎相等"
print("鵝的喙:",geese.beak)

3.實例屬性


實例屬性,在JAVA中類似于對象的屬性(官方不是這個叫法),實例屬性是指在類的方法中的屬性,就是__init__()構造方法中的參數,只作用于當前實例中。

class Goose:'''鵝類'''neck = "脖子較長"wing = "振翅頻率高"leg = "腿位于身體的中心支點,行走自如"def __init__(self,name):self.name = nameprint("我屬于鵝類!我有以下特征:")print(self.neck)print(self.wing)print(self.leg)print("實例屬性,geese特有:",name)geese = Goose("娃哈哈")

4.實例屬性和類屬性的區別

class Dog:# 類屬性(所有狗共享)species = "Canis familiaris"def __init__(self, name):# 實例屬性(每個狗獨立)self.name = name# 創建兩個實例
dog1 = Dog("Buddy")
dog2 = Dog("Max")# 訪問類屬性(通過類名或實例名)
print(Dog.species)          # 輸出: Canis familiaris
print(dog1.species)         # 輸出: Canis familiaris# 訪問實例屬性(只能通過實例名)
print(dog1.name)            # 輸出: Buddy
print(dog2.name)            # 輸出: Max# 嘗試通過類名訪問實例屬性(報錯!)
#print(Dog.name)             # AttributeError: type object 'Dog' has no attribute 'name'# 修改類屬性
Dog.species = "Canis lupus"
print(dog1.species)         # 輸出: Canis lupus(所有實例同步更新)
print(dog2.species)         # 輸出: Canis lupus# 通過實例修改"類屬性"(實際是創建同名實例屬性)
dog1.species = "Golden Retriever"
print(dog1.species)         # 輸出: Golden Retriever(僅影響dog1)
print(dog2.species)         # 輸出: Canis lupus(dog2不受影響)# 類屬性本身未被修改
print(Dog.species)          # 輸出: Canis lupus

總結如下:

特性類屬性實例屬性
定義位置類內部,__init__?方法之外通常在?__init__?方法內
歸屬屬于類屬于實例
訪問方式類名或實例名均可訪問只能通過實例名訪問
共享性所有實例共享每個實例獨立
修改影響修改后影響所有實例修改僅影響當前實例

5.訪問限制

????????為了保證類內部的某些屬性或方法不被外部所訪問,可以在屬性或方法名前面添加單下劃線(_foo)、雙下劃線(__foo)或首尾加雙下劃線(__foo__),從而限制訪問權限。
其中,單下劃線、雙下劃線、首尾雙下劃線的作用如下:
首尾雙下劃線表示定義特殊方法,一般是系統定義名字,如__init__(),一般自定義不推薦這種定義
以單下劃線開頭的表示protected(保護)類型的成員,只允許類本身和子類進行訪問,但
不能使用“from module import *”語句導入
雙下劃線表示private(私有)類型的成員,只允許定義該方法的類本身進行訪問,而且也
不能通過類的實例進行訪問
,但是可以通過“類的實例名._類名_xxx”方式訪問。

class MyClass:def __init__(self):self.public_value = "Public"       # 公開屬性,可任意訪問self._protected_value = "Protected"  # 保護屬性(單下劃線開頭)self.__private_value = "Private"    # 私有屬性(雙下劃線開頭)def public_method(self):print("This is a public method.")def _protected_method(self):print("This is a protected method.")def __private_method(self):print("This is a private method.")def __special_method__(self):print("This is a special method (magic method).")class SubClass(MyClass):"""繼承MyClass類"""def show_protected(self):print("接受保護屬性 :", self._protected_value)def try_private(self):# 直接訪問私有屬性會報錯# print(self.__private_var)  # 報錯:AttributeError# 但可以通過 _類名__私有屬性 的方式訪問print("Accessing private from subclass:", self._MyClass__private_var)# 實例化
obj = MyClass()
sub_obj = SubClass()# 1. 公開成員(無下劃線)
print(obj.public_value)            # 輸出: Public
obj.public_method()              # 輸出: This is a public method.# 2. 保護成員(單下劃線開頭)
print(obj._protected_value)        # 輸出: Protected(可以訪問但不推薦)
obj._protected_method()          # 輸出: This is a protected method.
sub_obj.show_protected()         # 輸出: Accessing protected from subclass: Protected# 3. 私有成員(雙下劃線開頭)
# print(obj.__private_var)       # 報錯:AttributeError
# obj.__private_method()         # 報錯:AttributeError
print(obj._MyClass__private_var) # 輸出: Private(通過名稱重整訪問)
obj._MyClass__private_method()   # 輸出: This is a private method.
sub_obj.try_private()            # 輸出: Accessing private from subclass: Private# 4. 特殊方法(首尾雙下劃線)
obj.__special_method__()         # 輸出: This is a special method (magic method).

三.類的方法

1.實例方法

????????實例方法是指在類中定義的函數。該函數是一種在類的實例上操作的函數。同__init__()方法一樣,實例方法的第一個參數必須是self,并且必須包含一個self參數.

語法:

def 方法名(self,參數1,參數2....):
方法內容

調用形式:

? ? ? ? 只能通過類名.方法名(參數)

class Goose:def __init__(self,beak,wing,claw):print("我是鵝類!我有以下特征:")print(beak)print(wing)print(claw)def fly(self,state):print(state)
'''*******************調用方法**********************'''
beak_1 = "喙的基部較高,長度和頭部的長度幾乎相等"
wing_1 = "翅膀長而尖"
claw_1 = "爪子是蹼壯的"
wildGoose = Goose(beak_1,wing_1,claw_1)
wildGoose.fly("我飛行的時候,一會排成個人字,一會排成個一字")

2.類方法:

在該方法前面必須加上@classmethod(注解,裝飾器),來表明這是一個類方法,且必須帶一個參數cls(跟類方法的self一樣,但是為了區分兩者,這里要寫作cls)

調用方式:

????????推薦? ? ?類名.方法名調用,

????????不推薦? ?對象名.方法名

作用

  • 用于操作類屬性(而不是實例屬性)

  • 常用于工廠方法(創建類的不同實例)。

class Dog:"""species為一個類屬性@classmethod后的類方法一般為了操作類屬型(調用修改等等)"""species = "Canine"  # 類屬性def __init__(self, name):self.name = name@classmethoddef get_species(cls):return cls.species  # 訪問類屬性@classmethoddef from_birth_year(cls, name, birth_year):age = 2025 - birth_yearreturn cls(name)  # 返回一個新的 Dog 實例,并將name傳給新的實例(畢竟建造一個實例需要參數)# 通過類名調用類方法
print(Dog.get_species())  # 輸出: Canine# 類方法作為工廠方法創建實例
dog = Dog.from_birth_year("Max", 2018)
print(dog.name)  # 輸出: Max

注意:return cls(name)意味著

# 返回一個新的 Dog 實例,并將name傳給新的實例(畢竟建造一個實例需要參數)

3..靜態方法

在該方法前面必須加上@staticmethod(注解),來表明這是一個靜態方法,可以無參數,

調用方式:

????????推薦? ? ?類名.方法名調用,

????????不推薦? ?對象名.方法名

  • 作用

    • 與類相關,但不依賴類或實例的狀態(即不訪問?self?或?cls)。

    • 類似于普通函數,但邏輯上屬于類。

class MathUtils:@staticmethoddef add(a, b):return a + b@staticmethoddef multiply(a, b):return a * b# 通過類名調用靜態方法
print(MathUtils.add(3, 7))  # 輸出: 10# 也可以實例化后調用(但不推薦,靜態方法不依賴實例)
utils = MathUtils()
print(utils.multiply(2, 4))  # 輸出: 8

4.特殊方法:

(1)析構方法__del__()


Python中的垃圾回收主要采用的是引用計數。引用計數是一種內存管理技術,它通過引用計數器記錄所有對象的引用數量,當對象的引用計數器數值為0時,就會將該對象視為垃圾進行回收

????????getrefcount()函數是 sys模塊中用于統計對象引用數量的函數,其返回結果通常比預期的結果大1。這是因為getrefcount()函數也會統計臨時對象的引用。當一個對象的引用計數器數值為0時,就會調用_del__()方法,這個方法就是類的析構方法。系統就會銷毀這個對象,收回對象所占用的內存空間。
所以析構方法(即__del_()方法)是用于銷毀對象時系統自動調用的方法。每個類中也都默認有一個__del__()目方法,可以顯式地定義析構方法。
? ? ? ? 注意:析構方法不是銷毀方法,而是在銷毀之前釋放資源,銷毀方法是靠py底層代碼來完成

(2)__str__()

簡單來說就是相當于JAVA中的toString方法

若是不重寫,就會用py自帶的方法

class Person:def __init__(self, name, age):self.name = nameself.age = agep = Person("Alice", 25)
print(p)  # 輸出: <__main__.Person object at 0x7f8b1c1b3d90>

若是重寫:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"Person(name={self.name}, age={self.age})"p = Person("Alice", 25)
print(p)  # 輸出: Person(name=Alice, age=25)

四.繼承:

跟Java一樣有object類為總的父類

1.單繼承

基本語法:

????????class 子類名(父類名)

# 父類
class Animal:def speak(self):print("動物發出聲音")def eat(self):print("父類動物在吃東西")# 子類
class Dog(Animal):  # Dog繼承Animaldef speak(self):  # 重寫父類方法print("汪汪汪!")# 使用
animal = Animal()
animal.speak()  # 輸出:動物發出聲音dog = Dog()
dog.speak()     # 輸出:汪汪汪!
dog.eat()       #子類繼承父類方法eat

? ? ? ??

super關鍵字編程super方法,用法相同

2.多繼承

1.在職研究生繼承了Student和staff類

2.兩者都有showinfo方法,調用對象.方法名,會優先調用第一個繼承的父類 的方法,這里即Student類的showinfo方法

  • 若想調用Teacher的方法,可以:

    1. 調整繼承順序:class Person(Teacher, Student)

    2. 直接指定:Teacher.showinfo(p)

    3. 在子類中重寫方法并手動選擇調用哪個父類的方法是

3. 方法重寫(Override)

子類可以重寫父類的方法以改變其行為

# 父類
class Animal:def speak(self):print("動物發出聲音")def eat(self):print("父類動物在吃東西")# 子類
class Dog(Animal):  # Dog繼承Animaldef speak(self):  # 重寫父類方法print("汪汪汪!")# 使用
animal = Animal()
animal.speak()  # 輸出:動物發出聲音dog = Dog()
dog.speak()     # 輸出:汪汪汪!

4. super()函數

# 父類
class Animal:def speak(self):print("動物發出聲音")def eat(self):print("父類動物在吃東西")# 子類
class Dog(Animal):  # Dog繼承Animaldef speak(self):  # 重寫父類方法print("汪汪汪!")super().eat()# 使用
dog = Dog()
dog.speak()     # 輸出:汪汪汪!

5.強制轉換

????????對于Python繼承機制

class Animal:def eat(self):print("動物吃東西")class Dog(Animal):  # Dog繼承自Animaldef eat(self):print("狗吃骨頭")def bark(self):print("汪汪叫")class Cat(Animal):def eat(self):print("貓吃魚")
# 向上轉型(自動) - 子類轉父類
animal = Dog()  # 狗是動物(自動轉換)
animal.eat()    # 輸出: 狗吃骨頭def trans(animal,obj):if isinstance(animal, obj):dog = animal  dog.bark()    else:print("不能將動物轉為動物子類")trans(animal,Dog)
"""狗吃骨頭
汪汪叫
"""
dog = Dog()
cat = Cat()
trans(cat,Dog)#不能將動物轉為動物子類

? ? ? ? 動物= 狗可以,動物=貓 可以,但是不能? ?狗=? 動物

????????要想狗 = 動物必須強制轉換,狗 = (狗)動物

class Animal:def __init__(self, name):self.name = nameclass Dog:def __init__(self, animal):  # 構造函數中實現轉換self.name = animal.namedef bark(self):print(f"{self.name}在汪汪叫")animal = Animal("旺財")
dog = Dog(animal)  # 強制將Animal轉為Dog
dog.bark()         # 輸出: 旺財在汪汪叫

五.多態

首先Python中的多態根JAVA不一樣,JAVA的多態必須要在繼承的基礎之上,但是py的多態,根本不關心你是不是繼承,是不是相同的數據類型。只要不同的類中有相同的方法,即可實現多態。

所以要定義一個接口,實現類的多態化。

class Animal:def eat(self):print("人吃五谷雜糧")class Dog:def eat(self):print("狗吃骨頭")class Cat:    def eat(self):print("貓吃魚")def jiekou(obj):obj.eat()# 創建實例
animal = Animal()
dog = Dog()
cat = Cat()# 多態調用
jiekou(animal)  # 輸出: 人吃五谷雜糧
jiekou(dog)     # 輸出: 狗吃骨頭
jiekou(cat)     # 輸出: 貓吃魚

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/88214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/88214.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/88214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【力扣 困難 C】329. 矩陣中的最長遞增路徑

目錄 題目 解法一 題目 待添加 解法一 int max(int a, int b) {return a > b ? a : b; }int search(int** matrix, int m, int n, int i, int j, int (*dp)[n]) {if (dp[i][j]) {return dp[i][j];}int len 0;if (i > 0 && matrix[i - 1][j] > matrix[i]…

Blueprints - UE5的增強輸入系統

一些學習筆記歸檔&#xff1b;增強輸入系統由兩部分組成&#xff1a;Input Action和Input Mapping ContextInput Action是輸入操作的映射&#xff08;操作中比如有移動、跳躍等&#xff09;&#xff0c;Input Mapping Context是輸入情境的映射&#xff08;對各種操作的具體按鍵…

Python 【技術面試題和HR面試題】? 動態類型、運算符、輸入處理及算法編程問答

1.技術面試題 &#xff08;1&#xff09;TCP與UDP的區別是什么&#xff1f; 答&#xff1a; ①連接性&#xff1a;TCP 面向連接&#xff0c;3次握手及4次揮手&#xff0c;建立端到端的虛鏈路像&#xff1b;UDP 無連接&#xff0c;直接發送&#xff0c;無需預先建立連接 。 ②傳…

etcd-cpp-apiv3 二次封裝

接口介紹頭文件#include <etcd/Client.hpp> #include <etcd/KeepAlive.hpp> #include <etcd/Response.hpp> #include <etcd/SyncClient.hpp> #include <etcd/Value.hpp> #include <etcd/Watcher.hpp>下面從功能介紹幾個類的概念Value &…

【網絡與系統安全】強制訪問控制——Biba模型

一、模型定義與目標 提出背景&#xff1a;1977年由Ken Biba提出&#xff0c;是首個完整性安全模型&#xff0c;與BLP模型形成對偶&#xff08;BLP關注機密性&#xff0c;Biba關注完整性&#xff09;。核心目標&#xff1a;防止低完整性信息污染高完整性信息&#xff0c;避免未授…

從架構抽象到表達范式:如何正確理解系統架構中的 4C 模型20250704

&#x1f9e9; 從架構抽象到表達范式&#xff1a;如何正確理解系統架構中的 4C 模型&#xff1f; “4C”到底是架構的組成結構&#xff0c;還是架構圖的表現方式&#xff1f;這類看似細節的問題&#xff0c;其實直擊了我們在系統設計中認知、表達與落地之間的張力。 &#x1f5…

Debian10安裝Mysql5.7.44 筆記250707

Debian10安裝Mysql5.7.44 筆記250707 1?? 參考 1 在Debian 10 (Buster) 上安裝 MySQL 5.7.44 的步驟如下&#xff1a; 1. 添加 MySQL APT 倉庫 MySQL 官方提供了包含特定版本的倉庫&#xff1a; # 下載倉庫配置包 wget https://dev.mysql.com/get/mysql-apt-config_0.8.28…

20250706-6-Docker 快速入門(上)-鏡像是什么?_筆記

一、鏡像是什么&#xfeff;1. 一個分層存儲的文件&#xff0c;不是一個單一的文件分層結構: 與傳統ISO文件不同&#xff0c;Docker鏡像由多個文件組成&#xff0c;采用分層存儲機制存儲優勢: 每層可獨立復用&#xff0c;顯著減少磁盤空間占用&#xff0c;例如基礎層可被多個鏡…

[SystemVerilog] Clocking

SystemVerilog Clocking用法詳解 SystemVerilog 的 clocking 塊&#xff08;Clocking Block&#xff09;是一種專門用于定義信號時序行為的構造&#xff0c;主要用于驗證環境&#xff08;如 UVM&#xff09;中&#xff0c;以精確控制信號的采樣和驅動時序。clocking 塊通過將信…

kong網關基于header分流灰度發布

kong網關基于header分流灰度發布 在現代微服務架構中&#xff0c;灰度發布&#xff08;Canary Release&#xff09;已經成為一種常用且安全的上線策略。它允許我們將新版本的功能僅暴露給一小部分用戶&#xff0c;從而在保證系統穩定性的同時收集反饋、驗證效果、規避風險。而作…

Go語言gin框架原理

在gin框架中&#xff0c;最關鍵的就是前綴樹&#xff0c;是很重要的。gin框架本質上是在http包的基礎之上&#xff0c;對其的一個二次封裝。這里借鑒一下小徐先生的圖&#xff0c;可能當前版本的gin可能內容有所改變&#xff0c;但大致思想還是這樣。gin框架所做的就是提供一個…

4、Sending Messages

本節介紹如何發送消息。Using KafkaTemplate本節介紹如何使用KafkaTemplate發送消息。OverviewKafkaTemplate封裝了一個生產者&#xff0c;并提供了向Kafka主題發送數據的便利方法。以下列表顯示了KafkaTemplate的相關方法&#xff1a;CompletableFuture<SendResult<K, V…

CSS長度單位問題

在 CSS 中&#xff0c;100px 的邏輯長度在不同分辨率的手機屏幕上是否表現一致&#xff0c;取決于 設備的像素密度&#xff08;devicePixelRatio&#xff09; 和 視口&#xff08;viewport&#xff09;的縮放設置。以下是詳細分析&#xff1a;1. 核心概念 CSS 像素&#xff08;…

基于Java+SpringBoot的圖書管理系統

源碼編號&#xff1a;S606源碼名稱&#xff1a;基于SpringBoot的圖書管理系統用戶類型&#xff1a;雙角色&#xff0c;用戶、管理員數據庫表數量&#xff1a;12 張表主要技術&#xff1a;Java、Vue、ElementUl 、SpringBoot、Maven運行環境&#xff1a;Windows/Mac、JDK1.8及以…

XTOM工業級藍光三維掃描儀用于筆記本電腦背板模具全尺寸檢測

鎂合金具有密度小、強度高、耐腐蝕性好等優點&#xff0c;成為筆記本電腦外殼主流材料。沖壓模具作為批量生產筆記本電腦鎂合金背板的核心工具&#xff0c;其精度直接決定了產品的尺寸一致性、結構可靠性與外觀品質。微米級模具誤差可能在沖壓過程中被放大至毫米級&#xff08;…

運維打鐵: MongoDB 數據庫集群搭建與管理

文章目錄思維導圖一、集群基礎概念1. 分片集群2. 副本集二、集群搭建1. 環境準備2. 配置副本集步驟 1&#xff1a;修改配置文件步驟 2&#xff1a;啟動 MongoDB 服務步驟 3&#xff1a;初始化副本集3. 配置分片集群步驟 1&#xff1a;配置配置服務器副本集步驟 2&#xff1a;啟…

HCIP-Datacom Core Technology V1.0_5 OSPF特殊區域及其他特性

在前面的章節中&#xff0c;OSPF可以劃分區域&#xff0c;減輕單區域里面LSDB的規模&#xff0c;從而減輕路由器的負荷&#xff0c;雖然OSPF能夠劃分區域&#xff0c;但是依舊需要維護域間路由和外部路由&#xff0c;這樣隨著網絡規模的不斷擴大&#xff0c;路由器所維護的LSDB…

實時開發IDE部署指南

&#x1f525;&#x1f525; AllData大數據產品是可定義數據中臺&#xff0c;以數據平臺為底座&#xff0c;以數據中臺為橋梁&#xff0c;以機器學習平臺為中層框架&#xff0c;以大模型應用為上游產品&#xff0c;提供全鏈路數字化解決方案。 ?杭州奧零數據科技官網&#xff…

深入解析 RAGFlow:文件上傳到知識庫的完整流程

在 RAGFlow 這樣的檢索增強生成&#xff08;RAG&#xff09;系統中&#xff0c;知識庫是其核心。用戶上傳的文檔如何高效、可靠地轉化為可檢索的知識&#xff0c;是系統穩定運行的關鍵。今天&#xff0c;我們就來深入探討 RAGFlow 中文件上傳到知識庫的完整流程&#xff0c;揭秘…

cad_recognition 筆記

Hubch/cad_recognition | DeepWiki https://github.com/Hubch/cad_recognition winget install python.python.3.10 python -m venv venv micromamba activate ./venv pip install paddleocr2.9.0 pip install poetry pip install moviepy1.0.3 下次要用conda建環境 或者…