中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

新開傳奇網(wǎng)站曾勁松線下推廣方式都有哪些

新開傳奇網(wǎng)站曾勁松,線下推廣方式都有哪些,wordpress在線評(píng)論,騰訊免費(fèi)企業(yè)郵箱注冊(cè)封裝、繼承、多態(tài) 當(dāng)談到封裝、繼承和多態(tài)時(shí),通常是在面向?qū)ο缶幊?(OOP) 的上下文中討論的。 封裝 (Encapsulation) 示例: class Person: def __init__(self, name, age): self.__name = name # 使用雙下劃線前綴將屬性變?yōu)樗接? self.__age = age ? de…

 封裝、繼承、多態(tài)

當(dāng)談到封裝、繼承和多態(tài)時(shí),通常是在面向?qū)ο缶幊?(OOP) 的上下文中討論的。

封裝 (Encapsulation) 示例:

class Person:   def __init__(self, name, age):       self.__name = name  # 使用雙下劃線前綴將屬性變?yōu)樗接?nbsp;      self.__age = age
?   def get_name(self):       return self.__name
?   def set_name(self, new_name):       if len(new_name) > 0:           self.__name = new_name
?   def get_age(self):       return self.__age
?   def set_age(self, new_age):       if new_age >= 0:           self.__age = new_age
?
# 創(chuàng)建一個(gè)Person對(duì)象并訪問(wèn)屬性
person = Person("Alice", 30)
print(person.get_name())  # 輸出:Alice
person.set_age(32)  # 設(shè)置年齡
print(person.get_age())  # 輸出:32

在這個(gè)示例中,我們通過(guò)將屬性標(biāo)記為私有(使用雙下劃線前綴)來(lái)封裝數(shù)據(jù),并提供公共方法(get_name、set_nameget_age、set_age)來(lái)訪問(wèn)和修改這些屬性。這樣,我們可以控制屬性的訪問(wèn)和修改,以確保數(shù)據(jù)的安全性。

使用面向?qū)ο髞?lái)開發(fā),示例代碼如下:

  • 類:理解為模板
  • 對(duì)象:理解為實(shí)物
  1. 在使用面向過(guò)程編程時(shí),當(dāng)需要對(duì)數(shù)據(jù)處理時(shí),需要考慮用哪個(gè)模板中哪個(gè)函數(shù)來(lái)進(jìn)行操作,但是當(dāng)用面向?qū)ο缶幊虝r(shí),因?yàn)橐呀?jīng)將數(shù)據(jù)存儲(chǔ)到了這個(gè)獨(dú)立的空間中,這個(gè)獨(dú)立的空間(即對(duì)象)中通過(guò)一個(gè)特殊的變量(__class__)能夠獲取到類(模板),而且這個(gè)類中的方法是有一定數(shù)量的,與此類無(wú)關(guān)的將不會(huì)出現(xiàn)在本類中,因此需要對(duì)數(shù)據(jù)處理時(shí),可以很快速的定位到需要的方法是誰(shuí) 這樣更方便
  2. 全局變量是只能有1份的,多個(gè)函數(shù)需要多個(gè)備份時(shí),往往需要利用其它的變量來(lái)進(jìn)行儲(chǔ)存;而通過(guò)封裝 會(huì)將用來(lái)存儲(chǔ)數(shù)據(jù)的這個(gè)變量 變?yōu)榱藢?duì)象中的一個(gè)“全局”變量,只要對(duì)象不一樣那么這個(gè)變量就可以再有1份,所以這樣更方便
  3. 代碼劃分更清晰

繼承 (Inheritance) 示例:

class Animal:   def __init__(self, name):       self.name = name
?   def speak(self):       pass
?
class Dog(Animal):   def speak(self):       return f"{self.name} 說(shuō):汪汪汪!"
?
class Cat(Animal):   def speak(self):       return f"{self.name} 說(shuō):喵喵喵!"
?
# 創(chuàng)建一個(gè)Dog對(duì)象和一個(gè)Cat對(duì)象,并調(diào)用speak方法
dog = Dog("旺財(cái)")
cat = Cat("小花")
print(dog.speak())  # 輸出:旺財(cái) 說(shuō):汪汪汪!
print(cat.speak())  # 輸出:小花 說(shuō):喵喵喵!

在這個(gè)示例中,我們定義了一個(gè)基類 Animal,然后創(chuàng)建了兩個(gè)派生類 DogCat,它們繼承了 Animal 的屬性和方法。每個(gè)派生類都可以覆蓋基類的方法(例如 speak),以實(shí)現(xiàn)自己的行為。

  1. 能夠提升代碼的重用率,即開發(fā)一個(gè)類,可以在多個(gè)子功能中直接使用
  2. 繼承能夠有效的進(jìn)行代碼的管理,當(dāng)某個(gè)類有問(wèn)題只要修改這個(gè)類就行,而其繼承這個(gè)類的子類往往不需要就修改

多態(tài) (Polymorphism) 示例:

class Shape:   def area(self):       pass
?
class Circle(Shape):   def __init__(self, radius):       self.radius = radius
?   def area(self):       return 3.14 * self.radius * self.radius
?
class Rectangle(Shape):   def __init__(self, length, width):       self.length = length       self.width = width
?   def area(self):       return self.length * self.width
?
# 創(chuàng)建一個(gè)Shape的列表,包含不同類型的圖形對(duì)象
shapes = [Circle(5), Rectangle(4, 6), Circle(3)]
?
# 計(jì)算并輸出每個(gè)圖形的面積
for shape in shapes:   print(f"面積:{shape.area()}")

在這個(gè)示例中,我們定義了一個(gè)基類 Shape,以及兩個(gè)派生類 CircleRectangle,它們都具有一個(gè)名為 area 的方法。通過(guò)多態(tài),我們可以在一個(gè)列表中存儲(chǔ)不同類型的圖形對(duì)象,然后通過(guò)統(tǒng)一的方法調(diào)用來(lái)計(jì)算它們的面積。這就是多態(tài)的核心思想,不同的對(duì)象可以對(duì)相同的方法做出不同的響應(yīng)。

class MiniOS(object):"""MiniOS 操作系統(tǒng)類 """def __init__(self, name):self.name = nameself.apps = []  # 安裝的應(yīng)用程序名稱列表def __str__(self):return "%s 安裝的軟件列表為 %s" % (self.name, str(self.apps))def install_app(self, app):# 判斷是否已經(jīng)安裝了軟件if app.name in self.apps:print("已經(jīng)安裝了 %s,無(wú)需再次安裝" % app.name)else:app.install()self.apps.append(app.name)class App(object):def __init__(self, name, version, desc):self.name = nameself.version = versionself.desc = descdef __str__(self):return "%s 的當(dāng)前版本是 %s - %s" % (self.name, self.version, self.desc)def install(self):print("將 %s [%s] 的執(zhí)行程序復(fù)制到程序目錄..." % (self.name, self.version))class PyCharm(App):passclass Chrome(App):def install(self):print("正在解壓縮安裝程序...")super().install()linux = MiniOS("Linux")
print(linux)pycharm = PyCharm("PyCharm", "1.0", "python 開發(fā)的 IDE 環(huán)境")
chrome = Chrome("Chrome", "2.0", "谷歌瀏覽器")
chrome2 = Chrome("Chrome2", "3.0", "古哥瀏覽器")linux.install_app(pycharm)
linux.install_app(chrome)
linux.install_app(chrome)
linux.install_app(chrome2)print(linux)Linux 安裝的軟件列表為 []
將 PyCharm [1.0] 的執(zhí)行程序復(fù)制到程序目錄...
正在解壓縮安裝程序...
將 Chrome [2.0] 的執(zhí)行程序復(fù)制到程序目錄...
已經(jīng)安裝了 Chrome,無(wú)需再次安裝
正在解壓縮安裝程序...
將 Chrome2 [3.0] 的執(zhí)行程序復(fù)制到程序目錄...
Linux 安裝的軟件列表為 ['PyCharm', 'Chrome', 'Chrome2']

多態(tài)需要用到繼承,重寫,調(diào)用某個(gè)方法時(shí),要看是父類創(chuàng)建的實(shí)例,還是子類創(chuàng)建的實(shí)例,實(shí)例不同調(diào)用的方法不同

關(guān)鍵點(diǎn):

  1. 定義了一個(gè)基類App,它具有name、version、desc屬性,以及一個(gè)install方法用于安裝。
  2. 定義了兩個(gè)子類PyCharm和Chrome,繼承自App。
  3. Chrome類對(duì)install方法進(jìn)行了重寫,添加了自定義的安裝邏輯。
  4. 在MainOS類中,通過(guò)install_app方法安裝不同的App實(shí)例對(duì)象,調(diào)用其install方法。
  5. 對(duì)于同一個(gè)install_app方法,傳入不同的類的實(shí)例,會(huì)調(diào)用各自類中不同的install實(shí)現(xiàn)。這就是多態(tài)。
  6. 多態(tài)允許我們基于同一接口編寫可擴(kuò)展和可維護(hù)的代碼。子類可以改變父類的行為,同時(shí)保持接口一致。

所以多態(tài)的關(guān)鍵是:

  • 有繼承關(guān)系
  • 子類覆蓋父類方法
  • 對(duì)不同子類實(shí)例調(diào)用相同的方法

這使得調(diào)用者可以一致地調(diào)用方法,而具體執(zhí)行代碼依賴于運(yùn)行時(shí)對(duì)象的類型。這就是多態(tài)

  • 面向過(guò)程開發(fā),簡(jiǎn)單、開發(fā)前期快速,越往后越復(fù)雜,適合小工程

  • 面向?qū)ο箝_發(fā),復(fù)雜、開發(fā)前期較慢,越往后開發(fā)越方便,適合大工程

    沒(méi)有最好的開發(fā)模式,只有經(jīng)過(guò)多多練習(xí),見(jiàn)的多了,感受多了,自然也就能夠在不同的任務(wù)、不同的工程,使用合適的方式進(jìn)行開發(fā)

靜態(tài)方法和類方法

類屬性、實(shí)例屬性

它們?cè)诙x和使用中有所區(qū)別,而最本質(zhì)的區(qū)別是內(nèi)存中保存的位置不同,

  • 實(shí)例屬性屬于對(duì)象

  • 類屬性屬于類

class Province(object):# 類屬性country = 'china'def __init__(self, name):# 實(shí)例屬性self.name = name# 創(chuàng)建一個(gè)實(shí)例對(duì)象
obj = Province('shangdong')
# 直接訪問(wèn)實(shí)例屬性
print(obj.name)
# 直接訪問(wèn)類屬性
Province.country

由上述代碼可以看出【實(shí)例屬性需要通過(guò)對(duì)象來(lái)訪問(wèn)】【類屬性通過(guò)類訪問(wèn)】,在使用上可以看出實(shí)例屬性和類屬性的歸屬是不同的。

其在內(nèi)容的存儲(chǔ)方式類似如下圖:

由上圖看出:

  • 類屬性在內(nèi)存中只保存一份

  • 實(shí)例屬性在每個(gè)對(duì)象中都要保存一份

  • 通過(guò)類創(chuàng)建實(shí)例對(duì)象時(shí),如果每個(gè)對(duì)象需要具有相同名字的屬性,那么就使用類屬性,用一份既可

實(shí)例方法、靜態(tài)方法和類方法

方法包括:實(shí)例方法、靜態(tài)方法和類方法,三種方法在內(nèi)存中都?xì)w屬于類,區(qū)別在于調(diào)用方式不同。

  • 實(shí)例方法:由對(duì)象調(diào)用;至少一個(gè)self參數(shù);執(zhí)行實(shí)例方法時(shí),自動(dòng)將調(diào)用該方法的對(duì)象賦值給self;

  • 類方法:由類調(diào)用; 至少一個(gè)cls參數(shù);執(zhí)行類方法時(shí),自動(dòng)將調(diào)用該方法的類賦值給cls;

  • 靜態(tài)方法:由類調(diào)用;無(wú)默認(rèn)參數(shù);

class Foo(object):def __init__(self, name):self.name = namedef ord_func(self):""" 定義實(shí)例方法,至少有一個(gè)self參數(shù) """# print(self.name)print('實(shí)例方法')@classmethoddef class_func(cls):""" 定義類方法,至少有一個(gè)cls參數(shù) """print('類方法')@staticmethoddef static_func():""" 定義靜態(tài)方法 ,無(wú)默認(rèn)參數(shù)"""print('靜態(tài)方法')f = Foo("china")
# 調(diào)用實(shí)例方法
f.ord_func()
# 調(diào)用類方法
Foo.class_func()
# 調(diào)用靜態(tài)方法
Foo.static_func()
實(shí)例方法
類方法
靜態(tài)方法
  • 相同點(diǎn):對(duì)于所有的方法而言,均屬于類,所以 在內(nèi)存中也只保存一份
  • 不同點(diǎn):方法調(diào)用者不同、調(diào)用方法時(shí)自動(dòng)傳入的參數(shù)不同。
# 實(shí)例方法
# self參數(shù)表示當(dāng)前對(duì)象的實(shí)例
class Person:def __init__(self, name):self.name = namedef say_hello(self):print(f'Hello, my name is {self.name}')p = Person('John')
p.say_hello() # 調(diào)用實(shí)例方法,自動(dòng)傳遞當(dāng)前實(shí)例p作為self參數(shù)# 靜態(tài)方法
# 使用@staticmethod裝飾器聲明,不需要默認(rèn)的self參數(shù)
class Person:def __init__(self, name):self.name = name@staticmethoddef hello():print('Hello!')Person.hello() # 直接使用類名調(diào)用靜態(tài)方法,不需要實(shí)例化# 類方法
# 使用@classmethod裝飾器聲明,默認(rèn)參數(shù)cls代表當(dāng)前類本身
class Person:count = 0 # 類屬性def __init__(self, name):self.name =
http://www.risenshineclean.com/news/37574.html

相關(guān)文章:

  • 網(wǎng)站開發(fā) 零基礎(chǔ)營(yíng)銷號(hào)
  • 凡科網(wǎng)站是什么做的十大免費(fèi)引流平臺(tái)
  • 南京專業(yè)做網(wǎng)站的公司重慶二級(jí)站seo整站優(yōu)化排名
  • 去哪里找空間做網(wǎng)站搜索引擎營(yíng)銷的分類
  • 餐飲門戶網(wǎng)站 方案怎么做百度競(jìng)價(jià)開戶費(fèi)用
  • 石家莊做網(wǎng)站建設(shè)公司外鏈查詢
  • 尋找移動(dòng)網(wǎng)站建設(shè)開魯網(wǎng)站seo不用下載
  • 小程序有什么用武漢seo管理
  • 做項(xiàng)目掙錢的網(wǎng)站seo快速排名軟件品牌
  • wordpress 熱門用戶網(wǎng)頁(yè)優(yōu)化包括什么
  • 移動(dòng)端網(wǎng)站模板怎么做網(wǎng)絡(luò)推廣員的日常工作
  • 網(wǎng)頁(yè)的網(wǎng)站建設(shè)在哪里搜索引擎站長(zhǎng)平臺(tái)
  • 微網(wǎng)站左側(cè)隱藏導(dǎo)航菜單鄭州網(wǎng)絡(luò)營(yíng)銷策劃
  • 湖北潛江資訊網(wǎng)紹興seo計(jì)費(fèi)管理
  • 一流的網(wǎng)站建設(shè)哪家好最近的新聞大事
  • 麗水連都區(qū)建設(shè)局網(wǎng)站網(wǎng)絡(luò)推廣運(yùn)營(yíng)推廣
  • 手機(jī)網(wǎng)站微信登陸推廣是什么意思
  • 東莞響應(yīng)式網(wǎng)站建設(shè)抖音排名優(yōu)化
  • 做網(wǎng)站編輯我能力得到提升cps推廣接單平臺(tái)
  • 免費(fèi)推廣做產(chǎn)品的網(wǎng)站廣州新聞24小時(shí)爆料熱線
  • 福建咨詢網(wǎng)站建設(shè)商家站長(zhǎng)之家端口掃描
  • 什么是網(wǎng)絡(luò)營(yíng)銷行為分析滎陽(yáng)seo推廣
  • 電腦如何創(chuàng)建網(wǎng)頁(yè)優(yōu)化落實(shí)疫情防控新十條
  • 網(wǎng)站管理建設(shè)的總結(jié)中層管理者培訓(xùn)課程有哪些
  • 廣州市網(wǎng)站開發(fā)搜索引擎有哪些分類
  • 企業(yè)網(wǎng)站實(shí)驗(yàn)報(bào)告網(wǎng)站優(yōu)化排名易下拉軟件
  • 企業(yè)官方網(wǎng)站認(rèn)證友情鏈接有哪些作用
  • 湖北網(wǎng)站設(shè)計(jì)制作開發(fā)廈門網(wǎng)站到首頁(yè)排名
  • 網(wǎng)站注冊(cè)時(shí)間網(wǎng)站點(diǎn)擊量 哪里查詢
  • 深圳網(wǎng)站seo 樂(lè)云踐新常用的網(wǎng)絡(luò)營(yíng)銷工具