物件導向和類

2022-09-10 11:00:22 字數 4234 閱讀 1817

面向過程的核心是過程,解決問題的過程,即先做什麼,在做什麼,最後做什麼

面向過程就像是設計一條流水線

優點:複雜的問題流程化,進而簡單話

缺點:牽一髮而動全身,擴充套件性差,可維護性差

應用場景:對擴充套件性要求不高的地方(比如安裝包)

物件導向核心是物件

什麼是物件

1.程式中

函式:盛放資料的容器

物件:盛放資料和函式的容器

2.現實生活中

一切都是物件

物件:特徵與技能的結合體

優點:擴充套件性強,可維護性強

缺點:程式設計複雜度高

def choose_course(stu_dict, course):

print('%s選課成功 %s' % (stu_dict['name'], stu_dict['course']))

物件:特徵與技能的結合體

類:一系列物件相似的特徵和相似的技能的結合體

強調:站在不同的分類,劃分的分類不一定一樣

到底是先有類還是先有物件?

1. 程式中:

必須先定義類,然後呼叫類產生物件

2. 現實生活中:

先有物件,在有人類

使用專業的語法定義類:

1. 定義函式

def 函式名():

pass

2. 定義類:

class 類名():

pass

定義類發生了什麼事?

1.立即執行類體**

2.產生乙個類的命名空間,把類體裡面執行的名字都扔到命名空間中

3.把類的命名空間繫結給__dict__,類名.__dict__

# 類名的首字母一般都是大寫

class student():

# 定義乙個屬性

# 變數放到類裡面就稱為屬性

school = 'sh'

# 定義乙個技能(函式)

# 函式放到類裡面就稱為方法

def choose_course(stu_dict, course):

print('%s選課成功%s' % (stu_dict['name'], stu_dict['course']))

print('!!!!!!')

# 類只要定義類就會執行

# 檢視類的命名空間

print(student.__dict__)

# 產生物件

# 呼叫類返回的結果就是物件

# 預設產生的是乙個空物件{}

stu1 = student()

# 檢視物件的命名空間

呼叫類發生了幾件事?

1.得到乙個空物件

2.呼叫了student.__dict__

3.得到乙個初始化結果

# 類名的首字母一般都是大寫

class student():

# 定義乙個屬性

# 變數放到類裡面就稱為屬性

school = 'sh'

# 定義乙個技能(函式)

# 函式放到類裡面就稱為方法

def choose_course(stu_dict, course):

print('%s選課成功%s' % (stu_dict['name'], stu_dict['course']))

# 初始化

# 自動傳值

# 呼叫類自動觸發函式

# 該方法不一定要定義

def __init__(stu_obj, name, age, gender):

stu_obj.name = name

stu_obj.age = age

stu_obj.gender = gender

# 在這個方法中不能有返回值

stu1 = student('aaa', 18, 'male')

stu2 = student('sss', 18, 'male')

print(stu1.__dict__)

print(stu1.name)

print(stu2.name)

print(stu1.school) # 先在物件命名空間找,再在類命名空間找

# print(stu1.__dict__) 報錯,這是在物件自己的命名空間找,自己的命名空間沒有

# 定義乙個屬性

school = 'sh'

def __init__(self, name, age, gender, course=none):

if course is none:

course =

self.name = name # stu1.__dict__['name'] = 'jason'

self.age = age # stu1.__dict__['age'] = 18

self.gender = gender # stu1.__dict__['gender'] = 'male'

self.course = course

def choose_course(self, course):

# stu_dict => stu

print('%s選課成功 %s' % (self.name, self.course))

def func(self, name, age):

pass

# 屬性的查詢:

# 1. 類屬性: 在類中寫的屬性就稱為類屬性

# 2. 物件屬性:在物件自己的命名空間中的屬性就是物件屬性

# 類屬性的查詢

# 1. 查

# print(student.school)

# 2. 增加

# student.country = 'china'

# 3. 改

# student.school = 'bj'

# 4. 刪除

# del student.school

# print(student.__dict__)

# {}

stu = student('ly', 18, 'male') # 例項化物件, stu就是乙個例項

# 物件屬性

# 1. 查

# print(stu.name)

# print(stu.age)

# print(stu.gender)

# 2. 增

# stu.aaa = 'aaa'

## # 3. 改

# stu.name = 'bbb'

# 4. 刪除

# del stu.name

# print(stu.__dict__)

# 類中的方法,類可以呼叫,物件也可以呼叫

# 類呼叫方法

# student.choose_course(stu, 'python') # 類來呼叫,函式的引數有幾個就要傳幾個

# print(student.choose_course)

# 物件呼叫方法

# 類中的方法,類可以呼叫,物件也可以呼叫, 但是,推薦物件來呼叫,因為物件來呼叫,會把自己當成第乙個引數傳遞給函式

物件導向 物件和類

類和物件使物件導向程式設計技術中的最基本概念。是現實或思維世界中的實體在計算中的反映,它將資料以及這些資料上的操作封裝在一起。類是抽象的,是建立例項物件的模板 是具有類型別的變數 是乙個乙個具體的例項 物件中包含類的屬性和方法 類和物件的區別就是 魚和三文魚 貓和藍貓的區別。class 類名稱 cl...

物件導向 物件和類

物件導向 object oriented 簡稱oo 物件導向的學習 物件導向的語法的學習 簡單,靠記憶就可以,比較多 面對物件的思想的學習 稍微有一點難度,不太適應 物件導向的優勢 能夠實現良好程式結構,方便程式的開發和管理維護!效率 執行效率 計算機 物件導向效率不如過程化的快 開發效率 程式設計...

物件導向和類

物件導向的目的 1.把現實世界的事和物轉換到計算機中。2.把現實世界的事和物對應到計算機的 類 上。3.用類組織一批不同型別的資料 現實世界的物件 計算機中的類 計算機記憶體中的物件 無論什麼樣的專案用 物件導向 設計模式 物件導向的設計原則 都可以設計出很好的框架 類 1.什麼是類 類是一種資料結...