python 物件導向

2022-09-10 10:03:24 字數 4427 閱讀 2660

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

# 舉例:

1. 洗衣服

2. 把大象放冰箱中需要幾步?

'''1. 把冰箱門開啟

2. 把大象放進去

3. 關上冰箱門

'''3. 流水線生產飲料

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

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

應用場景:對擴充套件性要求不高的地方, eg:安裝包的使用

# 註冊的功能

'''1. 使用者輸入使用者名稱和密碼

2. 驗證引數

3. 寫入檔案,註冊成功

'''

物件導向核心是物件二字

什麼是物件?

1. 程式中:

函式:盛放資料的容器

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

2. 現實生活中:

一切皆物件

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

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

缺點:程式設計複雜度高

# 舉例:

以學生選課系統為例

def choose_course(stu_dict, course):

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

stu1 =

stu2 =

stu1['choose_course'](stu1, 'python')

stu2['choose_course'](stu2, 'python')

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

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

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

# 問題來了:

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

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()

stu2 = student()

stu3 = student()

print(stu1.__dict__)

print(stu2.__dict__)

print(stu3.__dict__)

class student():

# 定義乙個屬性

school = 'sh'

# 初始化方法

# 呼叫類自動觸發的函式

# 該方法不是一定要定義,需要用到就定義,不需要刻意不定義

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

# 空物件.name = name

# 空物件.age = age

# 空物件.gender = gender

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

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

stu_obj.gender = gender # stu1.__dict__['gender'] = 'male'、

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

# 定義乙個技能(函式)

def choose_course(stu_dict, course):

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

# 呼叫類發生了幾件事?

'''1. 得到乙個空物件

2. 呼叫了student.__dict__(空物件,'ly', 18, 'male'),

3. 得到乙個初始化的結果。

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

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

# stu1 = student()

# print(stu1.__dict__)

# print(stu2.__dict__)

# print(stu1.name)

# print(stu2.name)

# 屬性的查詢:先從自己的物件中查詢,然後在去產生物件的類中取找

stu1.school = 'aaaa'

print(stu1.school)

class student():

# 定義乙個屬性

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)

# 物件呼叫方法

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

stu.choose_course('python') # stu.choose_course(stu, 'python')

class teacher():

pass

print(isinstance(123, int))

print(isinstance(stu, teacher))

python物件導向學習 python物件導向學習

物件導向最重要的概念就是類 class 和例項 instance 必須牢記類是抽象的模板,比如student類,而例項是根據類建立出來的乙個個具體的 物件 每個物件都擁有相同的方法,但各自的資料可能不同。物件導向三個概念 1.封裝 即把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法讓可信的類進...

python物件導向總結 Python物件導向總結

python 物件導向 oop 1 物件導向 是乙個更大封裝,把乙個物件封裝多個方法 2 類 是對一些具有相同特徵或行為的事物的乙個統稱,是抽象的,不能直接使用 特徵被稱為屬性 行為被稱為方法 3 物件 是由類建立出來的乙個具體的存在,可以直接使用 先有類再有物件,類只有乙個,而物件可以有多個 類中...

python登入物件導向 python 物件導向

一 屬性和方法 1.a a 例項屬性 通過例項物件來新增的屬性就是例項屬性 a.count 10 例項方法都是在類中直接定義的 以self為第乙個引數的方法都是例項方法 當通過例項物件呼叫時,會自動傳遞當前物件作為self傳入 當通過類物件呼叫時,不會自動傳遞self a.test 等價於 a.te...