欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python全棧之面向?qū)ο蠡A(chǔ)

 更新時(shí)間:2021年11月30日 15:06:04   作者:熬夜泡枸杞  
這篇文章主要為大家介紹了Python面向?qū)ο蠡A(chǔ),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助

1. 面向?qū)ο髈op了解

# ### oop 面向?qū)ο蟮某绦蜷_發(fā)
# (1) 類的定義
# 1
class Car:
	pass
# 2 推薦
class Car():
	pass
# 3.
class Car(object):
	pass
	
# (2)類的實(shí)例化
class Car():
	pass
obj = Car()
print(obj)
# (3)類的基本結(jié)構(gòu)
"""
類中兩樣?xùn)|西:
	(1)成員屬性
	(2)成員方法
"""
class Car():
	# 成員屬性
	color = "白色"
	# 成員方法
	def didi():
		print("小車會(huì)嚓嚓的叫")

# 語(yǔ)法上不報(bào)錯(cuò),但是嚴(yán)禁使用,破壞了類中的結(jié)構(gòu),不要裸露的把判斷和循環(huán)直接寫在類中,而是用方法包起來(lái)
class Car():
	if 5 ==5 :
		print(11223344)
# (4)類的命名
"""類的命名 : 推薦使用大駝峰命名法,每個(gè)單詞的首字母都要大寫"""
"""
mycar => MyCar
zhangbaozhang => ZhangBaoZhang
"""

2. 對(duì)象的相關(guān)操作

# ### 面向?qū)ο蟮姆庋b - 對(duì)象的操作
"""
封裝:
	1.私有 : 在類內(nèi)可以互相訪問(wèn),在類外不能訪問(wèn)
	2.公有 : 在類內(nèi)或者類外都可以訪問(wèn)
類中成員:
	1.成員屬性
	2.成員方法
綁定方法:
	1.綁定到對(duì)象 : 當(dāng)對(duì)象去調(diào)用類中成員方法時(shí),系統(tǒng)會(huì)默認(rèn)把該對(duì)象當(dāng)成參數(shù)傳遞給該方法
	2.綁定到類   : 當(dāng)對(duì)象或者類去調(diào)用類中成員方法時(shí),系統(tǒng)會(huì)默認(rèn)把該類當(dāng)成參數(shù)傳遞給該方法
使用方式:
	對(duì)象.成員屬性
	對(duì)象.成員方法
"""
class MyCar():
	# 公有屬性
	logo = "布加迪威龍"
	# 私有屬性
	__price = "2000萬(wàn)"
	# 公有方法
	def run(self):
		print("百公里油耗300L,logo={} , price={}".format(self.logo, self.__price))
	# 私有方法
	def __info(self):
		print("車主信息保密,據(jù)說(shuō)是某個(gè)房地產(chǎn)大佬的兒子")
# 實(shí)例化對(duì)象(類的實(shí)例化)
obj = MyCar()
# (1)實(shí)例化的對(duì)象訪問(wèn)成員屬性和方法
# 公有
print(obj.logo)
obj.run()
# 私有 (私有成員無(wú)法在類外訪問(wèn),類內(nèi)可以)
# obj.__price error
# obj.run()
# obj.__info() error

#(2)實(shí)例化的對(duì)象動(dòng)態(tài)添加公有成員屬性
obj.color = "尿黃色"
obj.logo = "五菱宏光" 
print(obj.color)
print(obj.logo)
# __dict__ 獲取類對(duì)象的內(nèi)部成員
print(obj.__dict__)
print(MyCar.__dict__)
#(3)實(shí)例化的對(duì)象動(dòng)態(tài)添加公有成員方法
# 1.無(wú)參方法
def dahuangfeng():
	print("請(qǐng)加我大黃蜂")
obj.dahuangfeng = dahuangfeng
obj.dahuangfeng()
# 2.有參方法
# 基本版
def qingtianzhu(name):
	print("請(qǐng)叫我一柱擎天么,{}".format(name))
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu("擎天柱")
# 升級(jí)版
def qingtianzhu(obj,name):
	print("請(qǐng)叫我一柱擎天么,{},我的顏色是{}".format(name,obj.color))
obj.qingtianzhu = qingtianzhu
obj.qingtianzhu(obj,"擎天柱")
# 究極版
"""如果要?jiǎng)?chuàng)建綁定方法,參數(shù)的順序,self對(duì)象本身要放到第一位."""
def qingtianzhu(obj,name):
	print("請(qǐng)叫我一柱擎天么,{},我的顏色是{}".format(name,obj.color))
import types
# 創(chuàng)建綁定方法,系統(tǒng)自動(dòng)把該對(duì)象當(dāng)成參數(shù)傳遞給方法;
# types.MethodType(方法,對(duì)象) => 綁定方法   
res = types.MethodType(qingtianzhu,obj)
print(res)
obj.qingtianzhu = types.MethodType(qingtianzhu,obj)
obj.qingtianzhu("擎天柱")
# 3.lambda表達(dá)式
obj.weizhentian = lambda : print("我是威震天")
obj.weizhentian()

小提示:

類對(duì)象在調(diào)用方法,如果方法是類外的(自定義的方法),那么不會(huì)自動(dòng)傳參的(不會(huì)把類對(duì)象傳到方法里面)
self是用來(lái)接收對(duì)象這參數(shù)(self只是一個(gè)名字而已,無(wú)所謂,習(xí)慣用self)

在這里插入圖片描述

3. 類的相關(guān)操作

# ### 面向?qū)ο蟮姆庋b - 類的操作
"""
使用方式:
	類.成員屬性
	類.成員方法
"""
class MyCar():
	# 公有成員屬性
	platenum = "京A7758BB"
	# 私有成員屬性
	__earning = "月收入6000"
	# 公有成員方法
	def car_info():
		print("牌照信息可以公開")
		print("<======>")
		MyCar.__money_info()
	# 私有成員方法
	def __money_info():
		print( "收入信息保密" , MyCar.__earning )

# (1)定義的類訪問(wèn)公有成員屬性和方法
print(MyCar.platenum)
MyCar.car_info()
# MyCar.__money_info() error
# (2)定義的類動(dòng)態(tài)添加公有成員屬性
MyCar.oil = "1000L"
print(MyCar.oil)
print(MyCar.__dict__)
# (3)定義的類動(dòng)態(tài)添加公有成員方法
# 1.無(wú)參方法
def car_light():
	print("我是造車燈的方法")
MyCar.car_light = car_light
MyCar.car_light()
# 2.有參方法
def car_engine(name):
	print("我是造{}發(fā)動(dòng)機(jī)的方法".format(name))
MyCar.car_engine = car_engine
MyCar.car_engine("三缸發(fā)動(dòng)機(jī)")
# 3.lambda表達(dá)式
MyCar.luntai = lambda : print("我是造輪胎的方法")
MyCar.luntai()

# 對(duì)比 對(duì)象和類之間的不同
"""
1.類中的無(wú)參方法默認(rèn)只能類來(lái)調(diào)用,對(duì)象無(wú)法調(diào)取
2.對(duì)象可以調(diào)用類中的成員,反過(guò)來(lái),類不能調(diào)用對(duì)象中的成員
3.每創(chuàng)建一個(gè)對(duì)象都會(huì)在內(nèi)存中占用一份空間,對(duì)象之間是彼此獨(dú)立的;
"""
obj = MyCar()
# obj.car_info() error
MyCar.car_info()

obj.price = "10萬(wàn)"
print(MyCar.price)

4. 類對(duì)象的刪除操作

# ### 1.如何在類外訪問(wèn)私有成員
class Plane():
	# 公有成員
	captian = "趙沈陽(yáng)"
	# 私有成員
	__air_sister = "3名空姐"
	# 公有綁定方法
	def fly(self):
		print("飛機(jī)要非要平流層,才能減少震動(dòng)",self.__air_sister)
	# 私有綁定方法
	def __age(self):
		print("空姐年齡保密")
	# 公有無(wú)參方法
	def fly2():
		print("航天飛機(jī)飛到天空層,翱翔太空")
	# 私有無(wú)參方法
	def __earn():
		print("機(jī)長(zhǎng)的收入保密")
	def pub_get1(self):
		print(self.__air_sister)
		self.__age()
	def pub_get2():
		print(Plane.__air_sister)
		Plane.__earn()
# 實(shí)例化對(duì)象
obj = Plane()
# 方法一.訪問(wèn)私有成員 (不推薦)
# python私有化: 采取了改名策略 =>  _類名 + __air_sister
# print(obj.__air_sister)
print(obj._Plane__air_sister)
print(Plane.__dict__)
"""
{'__module__': '__main__', 'captian': '趙沈陽(yáng)', 
'_Plane__air_sister': '3名空姐', 
'fly': <function Plane.fly at 0x7f2774616158>, '_Plane__age': <function Plane.__age at 0x7f27746161e0>, 'fly2': <function Plane.fly2 at 0x7f2774616268>, '_Plane__earn': <function Plane.__earn at 0x7f27746162f0>, '__dict__': <attribute '__dict__' of 'Plane' objects>, '__weakref__': <attribute '__weakref__' of 'Plane' objects>, '__doc__': None}
"""
# 方法二.訪問(wèn)私有成員 (使用類中的公有方法,間接訪問(wèn)私有成員) (推薦)
obj = Plane()
obj.pub_get1()
Plane.pub_get2()
# ### 2.使用類對(duì)象刪除相應(yīng)的成員
"""
1.對(duì)象可以訪問(wèn)類中的公有成員,但是無(wú)權(quán)修改或者刪除該類中的成員
2.對(duì)象在訪問(wèn)成員時(shí),優(yōu)先訪問(wèn)該對(duì)象自己的成員,如果沒(méi)有在訪問(wèn)類的,類如果也沒(méi)有直接報(bào)錯(cuò);
"""
# 刪除對(duì)象成員屬性
obj.captian = "趙世超"
del obj.captian
print(obj.captian)
# 刪除對(duì)象成員方法
obj.basketball = lambda : print("我的私人飛機(jī)可以在天上打籃球")
print(obj.__dict__)
obj.basketball()
del obj.basketball
print(obj.__dict__)
# obj.basketball() error
# 刪除類中成員屬性
del Plane.captian
print(Plane.__dict__)
# Plane.captian
# print(obj.captian) error
# 刪除類中成員方法
del Plane.fly2
# Plane.fly2() error
# 注意: 對(duì)象無(wú)法調(diào)無(wú)參方法!! 返回來(lái),類可以調(diào)用對(duì)象的綁定方法么? 可以!!
Plane.fly(obj)

小提示:

如果在類外添加公有方法
def  __abc():
    print(1)
 在類外定義的方法__abc()只是簡(jiǎn)單的函數(shù)名字而已,之后在類里面定義
的時(shí)候,__abc()才是私有方法。
刪除或創(chuàng)建私有的方法,要在類外去操作 
對(duì)象在調(diào)用屬性的時(shí)候,先看自己有沒(méi)有,然后在看類中的屬性
class Plane():
    def fly1(self):
        print("飛機(jī)要起飛")
   def fly2(self):
       print("飛機(jī)真的要起飛了",self.captian)
   def fly3():
        print("飛機(jī)不起飛")
Plane.fly1(1) 類可以調(diào)用有參的方法,隨便穿個(gè)值進(jìn)去即可
Plane.fly2(1) 這樣的話就報(bào)錯(cuò),Plane.fly2(obj) 把對(duì)象傳進(jìn)去就可以出結(jié)果
如果說(shuō)對(duì)象調(diào)用類中無(wú)參的方法是不會(huì)成功的

5. 小練習(xí)

1.請(qǐng)定義一個(gè)交通工具(Vehicle)的類,其中有:
屬性:速度(公有speed), 車的類型(私有type)
方法:速度(公有setSpeed),加速(私有speedUp),減速(私有speedDown)
讓公有setSpeed調(diào)用私有speedUp和私有speedDown
2.用類改寫:猜數(shù)字游戲:
一個(gè)類有兩個(gè)成員num和guess,
num有一個(gè)初值100。
定義一個(gè)方法guess,
調(diào)用guess,如果大了則提示大了,小了則提示小了。等于則提示猜測(cè)成功。
3.創(chuàng)建一個(gè)圓Circle類。
為該類提供一個(gè)變量r表示半徑
方法一返回圓的面積,方法二返回圓的周長(zhǎng);

小提示:

如果在類內(nèi)的話,都是用對(duì)象調(diào)用方法或變量(self.speed、self.eat()),如果不是類的話,可以直接調(diào)變量和方法
r = 3 歸屬于circle這個(gè)類
self.r = r 歸屬于self這個(gè)對(duì)象

答案:

"""
1.請(qǐng)定義一個(gè)交通工具(Vehicle)的類,其中有:
屬性:速度(公有speed), 車的類型(私有type)
方法:速度(公有setSpeed),加速(私有speedUp),減速(私有speedDown)
讓公有setSpeed調(diào)用私有speedUp和私有speedDown
"""
class Vehicle():
	speed = "百公里1小時(shí)"
	__type = "拖拉機(jī)小蹦蹦"
	def setSpeed(self):
		self.__speedUp()
		self.__speedDown()
	def __speedUp(self):
		print("我是加速方法,速度{}".format(self.speed))
	def __speedDown(self):
		print("我是減速方法,小車的類型是{}".format(Vehicle.__type))
obj = Vehicle()
obj.setSpeed()
"""
2.用類改寫:猜數(shù)字游戲:
一個(gè)類有兩個(gè)成員num和guess,
num有一個(gè)初值100。
定義一個(gè)方法guess,
調(diào)用guess,如果大了則提示大了,小了則提示小了。等于則提示猜測(cè)成功。
"""
import re
class GuessGame():
	num = 100
	def guess(self):
		while True:
			n = input("請(qǐng)輸入要猜測(cè)的數(shù)字")
			obj = re.search(r"^\d+$",n)
			# print(obj)
			if obj:
				n = int(obj.group())
				if n > self.num:
					print("大了..")
				elif n < self.num:
					print("小了..")
				elif n == self.num:
					print("ok~ bingo")
					break
			else:
				print("輸入的內(nèi)容不正確")
# obj = GuessGame()
# obj.guess()
"""
3.創(chuàng)建一個(gè)圓Circle類。
為該類提供一個(gè)變量r表示半徑
方法一返回圓的面積,方法二返回圓的周長(zhǎng);
"""
import math
class Circle():
	r = 3
	def area(self):
		return math.pi * self.r ** 2
	def perimeter(self):
		return 2 * math.pi * self.r
obj = Circle()
res1 = obj.area()
res2 = obj.perimeter()
print(res1,res2)
# 方法二 (推薦)
import math
class Circle():
	def __init__(self,r):
		self.r = r	
	def area(self):
		return math.pi * self.r ** 2
	def perimeter(self):
		return 2 * math.pi * self.r
obj = Circle(4)
res1 = obj.area()
res2 = obj.perimeter()
print(res1,res2)

總結(jié)

本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • pycharm中:OSError:[WinError?1455]頁(yè)面文件太小無(wú)法完成操作問(wèn)題的多種解決方法

    pycharm中:OSError:[WinError?1455]頁(yè)面文件太小無(wú)法完成操作問(wèn)題的多種解決方法

    這篇文章主要給大家介紹了關(guān)于pycharm中:OSError:[WinError?1455]頁(yè)面文件太小無(wú)法完成操作問(wèn)題的多種徹底解決方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • python和JavaScript哪個(gè)容易上手

    python和JavaScript哪個(gè)容易上手

    在本篇文章里小編給大家分享的是一篇關(guān)于python和JavaScript哪個(gè)容易上手的相關(guān)知識(shí)點(diǎn)文章,有興趣的朋友們可以學(xué)習(xí)下。
    2020-06-06
  • Python譜減法語(yǔ)音降噪實(shí)例

    Python譜減法語(yǔ)音降噪實(shí)例

    今天小編就為大家分享一篇Python譜減法語(yǔ)音降噪實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python使用numpy實(shí)現(xiàn)直方圖反向投影示例

    python使用numpy實(shí)現(xiàn)直方圖反向投影示例

    今天小編就為大家分享一篇python使用numpy實(shí)現(xiàn)直方圖反向投影示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • wxPython事件驅(qū)動(dòng)實(shí)例詳解

    wxPython事件驅(qū)動(dòng)實(shí)例詳解

    這篇文章主要介紹了wxPython事件驅(qū)動(dòng)機(jī)制,以一個(gè)獲取當(dāng)前位置信息的實(shí)例形式講述了wxPython事件驅(qū)動(dòng)機(jī)制及其相關(guān)函數(shù)的用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-09-09
  • Python使用機(jī)器學(xué)習(xí)模型實(shí)現(xiàn)溫度預(yù)測(cè)詳解

    Python使用機(jī)器學(xué)習(xí)模型實(shí)現(xiàn)溫度預(yù)測(cè)詳解

    使用?Python?可以使用機(jī)器學(xué)習(xí)模型進(jìn)行溫度預(yù)測(cè)。常用的模型有回歸分析、隨機(jī)森林等。本文就來(lái)和大家來(lái)了具體實(shí)現(xiàn)方法,希望對(duì)大家有所幫助
    2023-01-01
  • Python中Django 后臺(tái)自定義表單控件

    Python中Django 后臺(tái)自定義表單控件

    本篇文章主要介紹了Python中Django 后臺(tái)自定義表單控件,其實(shí) django 已經(jīng)為我們提供了一些可用的表單控件,比如:多選框、單選按鈕等,有興趣的開業(yè)了解一下。
    2017-03-03
  • numpy.linalg.eig() 計(jì)算矩陣特征向量方式

    numpy.linalg.eig() 計(jì)算矩陣特征向量方式

    今天小編就為大家分享一篇numpy.linalg.eig() 計(jì)算矩陣特征向量方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • 基于Python實(shí)現(xiàn)圖像的傅里葉變換

    基于Python實(shí)現(xiàn)圖像的傅里葉變換

    傅里葉變換是一種函數(shù)在空間域和頻率域的變換,從空間域到頻率域的變換是傅里葉變換,而從頻率域到空間域是傅里葉的反變換。這篇文章主要為大家介紹的是通過(guò)Python實(shí)現(xiàn)圖像的傅里葉變換,感興趣的可以了解一下
    2021-12-12
  • Python要求O(n)復(fù)雜度求無(wú)序列表中第K的大元素實(shí)例

    Python要求O(n)復(fù)雜度求無(wú)序列表中第K的大元素實(shí)例

    這篇文章主要介紹了Python要求O(n)復(fù)雜度求無(wú)序列表中第K的大元素實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04

最新評(píng)論