一、類和物件
1、萬物皆物件
2、物件:用來描述客觀事物的一個 物體 ,由一組 屬性 和 方法 構成
3、屬性:物件具有的各種特征,每個物件的每個屬性都有特定值
4、方法:物件執行的操作
5、類:物件的分類,分類就是認識物件的程序
很多人學習蟒蛇,不知道從何學起, 很多人學習尋找python,掌握了基本語法之后,不知道在哪里案例上手, 很多已經可能知道案例的人,卻不怎么去學習更多高深的知識, 這三類人,我給大家提供一個好的學習平臺,免費獲取視頻教程,電子書,以及課程的源代碼! QQ群:101677771 歡迎加入,一起討論學習
|
面向物件設計的規則 |
|
1、圖書類: 屬性:圖書編號、書名、書的作者、上架日期、借出狀態 功能(方法):借出和歸還 |
|
2、銀行卡類: 屬性:卡號、銀行卡名稱、密碼、姓名、余額 方法:登入、存款、取款 |
二、面向物件創建:定義某個類的物件具有的屬性(變數)和方法(函式)
# 思路:
# 定義類 --> 人類
# 撰寫類的屬性:姓名、年齡、id(身份證號)、手機號
# 撰寫類的方法:吃、喝、玩、睡、上班
class Person:
# 撰寫屬性(變數)
name = "楊冪"
age = 30
gender = '女'
# 我不想用指定屬性,我想自己創建姓名
def set_param(self, name): # age、gender一樣操作
self.name = name
print(f'姓名:{self.name}')
# 如屬性很多,那就很麻煩,我們可以使用 def __init__()去構造
# 撰寫方法(函式),無參
def eat(self):
print('eating')
def drink(self):
print('drinking')
def play(self):
print('playing')
def sleep(self):
print('sleeping')
@classmethod
def work(self):
print('working')
# 物件的構造
YM = Person()
# 呼叫方法
YM.sleep()
YM.work()
zs = Person()
zs.set_param('張三')
# 類訪問方法,需要添加一個裝飾器@classmethod
Person.eat()
# def __init__() 去構造屬性
class Person:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
# 撰寫方法(函式),有參
def eat(self, food):
print(f'{self.name}在吃{food}')
def drink(self, sthing):
print(f'{self.name}在喝{sthing}')
def play(self):
print(f'{self.name}在玩')
def sleep(self):
print(f'{self.name}在睡覺')
def work(self):
print(f'{self.name}正在作業')
def info(self): # 輸出資訊
print("該人的資訊:", self.name, self.age, self.gender)
# 構造物件輸出資訊
lihaoran = Person(name='李浩然', age=32, gender='男')
# 呼叫方法
lihaoran.info()
lihaoran.work()
lihaoran.sleep()
三、面向物件思想:封裝、繼承、多型
1、封裝(屬性私有化)
- 私有屬性可以被查看,但是不能被修改 ---> get方法
- 私有屬性不被外界查看,但可以被外界修改 ---> set方法】
"""封裝(屬性私有化)"""
class Student:
def __init__(self, name, age, xh, id, address):
self.name = name # 默認公共屬性(允許外界讀取+修改)
self.age = age # 默認公共屬性(允許外界讀取+修改)
self.xh = xh
self.__id = id # 私有屬性(不允許外界讀取+修改)
self.__address = address # 私有屬性(不允許外界讀取+修改)
# 私有屬性可以被查看,但是不能被修改 ---> get方法
def getid(self):
return self.__id
def setaddress(self, newadress):
self.__address = newadress
def info(self):
print('學生的基本資訊:', self.name, self.age, self.xh, self.__id, self.__address)
zhangsan = Student('Tom', 18, '001', '340104555555555555', '南京')
# 私有屬性(不允許外界讀取+修改),如果想查看get方法
# print(zhangsan.id) # 沒有getid-->報錯AttributeError: 'Student' object has no attribute 'id'
read_student_id = zhangsan.getid()
print(f'查看張三id:{read_student_id}')
zhangsan.info()
zhangsan.setaddress("合肥")
zhangsan.info()
2、繼承、多型
- 繼承在父類基礎上構造出新的類,子類可以擁有繼承**父類的屬性和方法
- 多型:指一個物件可以用子類的特點也可以父類的特征
class Animal:
def __init__(self, name, color):
self.name = name
self.color = color
def eat(self, food):
print(f'{self.name}在吃{food}')
def drink(self, sthing):
print(f'{self.name}在喝{sthing}')
def play(self):
print(f'{self.name}在玩')
def sleep(self):
print(f'{self.name}在睡覺')
# 繼承
class Dog(Animal):
def __init__(self, name, color, age):
super().__init__(name, color) # super()呼叫父類物件
self.age = age # 屬性有個性(構造屬性重寫)
def kaijia(self):
print(f"{self.name}看家")
hashiqi = Dog('哈士奇', '黑白', 6)
hashiqi.eat('骨頭')
# 多型 方法上個性(構造方法重寫) 獨特個性
hashiqi.kaijia()
class Cat(Animal):
def __init__(self, name, color):
super().__init__(name, color) # super()呼叫父類物件
cat = Cat('波斯貓', 'red')
cat.eat('魚')
# cat.kaijia() 因為貓不會看家,這是狗的獨特個性
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/417048.html
標籤:Python
