亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python3.5面向?qū)ο笈c繼承圖文實(shí)例詳解

 更新時(shí)間:2019年04月24日 10:30:58   作者:loveliuzz  
這篇文章主要介紹了Python3.5面向?qū)ο笈c繼承,結(jié)合圖文與實(shí)例形式詳細(xì)分析了Python3.5面向?qū)ο笈c繼承的相關(guān)概念、原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python3.5面向?qū)ο笈c繼承。分享給大家供大家參考,具體如下:

1、編程的方式


2、面向?qū)ο蟮幕靖拍?/strong>




3、類(lèi)的基本概念




4、類(lèi)的定義與調(diào)用——簡(jiǎn)單代碼舉例

注:建議類(lèi)名的開(kāi)頭字母用大寫(xiě),在Python中,類(lèi)內(nèi)的函數(shù)稱(chēng)作方法,類(lèi)外的函數(shù)還是稱(chēng)作函數(shù)。





#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

#類(lèi)
class Person:
  i = 10   #屬性(變量)
  def eat(self):   #方法(函數(shù))
    print("eating...")
  pass

#類(lèi)的調(diào)用
a = Person()
a.eat()

運(yùn)行結(jié)果:

eating...

class Person():
  #對(duì)象屬性 構(gòu)造方法 在實(shí)例化對(duì)象時(shí)會(huì)自動(dòng)調(diào)用
  # 實(shí)例化的對(duì)象就具有name和age兩個(gè)屬性
  #self是指當(dāng)前的對(duì)象 self不是關(guān)鍵字可以被代替,但是習(xí)慣使用self指代當(dāng)前對(duì)象
  def __init__(self,name,age):
    # 通過(guò)構(gòu)造方法聲明了兩個(gè)對(duì)象屬性
    #對(duì)象.name屬性 = name參數(shù)
    self.name = name
    self.age = age

  #聲明一個(gè)類(lèi)方法
  def speak(self):
    print("Hello,my name is %s,and I'm %d years old" %(self.name,self.age))

#創(chuàng)建實(shí)例對(duì)象   會(huì)觸發(fā)構(gòu)造方法
people01 = Person("Jack",18)    #通過(guò)Person類(lèi)實(shí)例化出一個(gè)people對(duì)象
print(people01)   #打印Person對(duì)象在內(nèi)存中的地址

print(people01.name,people01.age)    #打印對(duì)象的屬性

#給對(duì)象添加屬性
people01.sex = "F"
print(people01.sex)

#類(lèi)方法的調(diào)用
people01.speak()

運(yùn)行結(jié)果:

<__main__.Person object at 0x0059C5B0>
Jack 18
F
Hello,my name is Jack,and I'm 18 years old

5、類(lèi)的方法



示例代碼:

#方法——靜態(tài)方法
class S():
  #實(shí)例(對(duì)象)屬性
  def __init__(self,name,age):     #self一般指實(shí)例對(duì)象
    self.name = name
    self.age = age

  @staticmethod    #用staticmethod裝飾器修飾 表示test2為靜態(tài)方法
  def test2():    #不能傳入self 對(duì)象的引用
    print("test2...")

s1 = S("Joe",18)
s1.test2()   #通過(guò)實(shí)例調(diào)用靜態(tài)方法
S.test2()    #通過(guò)類(lèi)名調(diào)用靜態(tài)方法


#方法——類(lèi)方法
class C():
  #類(lèi)屬性
  country = "China"

  #實(shí)例(對(duì)象)屬性
  def __init__(self,name,age):
    self.name = name
    self.age = age

  @classmethod    #用classmethod裝飾器修飾 表示test3為類(lèi)方法
  def test3(cls):   #cls指的是類(lèi)
    print("test3...",cls.country)    #類(lèi)方法調(diào)用類(lèi)屬性


c1 = C("Jack",18)
c1.test3()   #通過(guò)實(shí)例調(diào)用類(lèi)方法
C.test3()    #通過(guò)類(lèi)名調(diào)用類(lèi)方法

運(yùn)行結(jié)果:

test1...
test2...
test2...
test3... China
test3... China


(1)構(gòu)造方法:構(gòu)造方法不能重載(被覆蓋)

在Python中內(nèi)置,每一個(gè)類(lèi)都有一個(gè)默認(rèn)的不帶參數(shù)的構(gòu)造方法,不需要人為的單獨(dú)調(diào)用,在調(diào)用類(lèi)的同時(shí)就運(yùn)行了構(gòu)造方法。

構(gòu)造方法的作用:初始化數(shù)據(jù)、創(chuàng)建對(duì)象(構(gòu)造方法的調(diào)用)


#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

class Person:
  def __init__(self):
    print("構(gòu)造方法")
  pass

Person()  #類(lèi)的調(diào)用--創(chuàng)建對(duì)象

運(yùn)行結(jié)果

構(gòu)造方法

帶參數(shù)的構(gòu)造方法:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

class Person:
  # def __init__(self):
  #   print("構(gòu)造方法")
  def __init__(self,x):
    print("帶參數(shù)的構(gòu)造方法:",x)

  def add(self,x,y):
    print(x+y)

  pass

zs = Person("hello")  #類(lèi)的調(diào)用--創(chuàng)建對(duì)象
zs.add(1,2)

 運(yùn)行結(jié)果:

帶參數(shù)的構(gòu)造方法: hello
3

(2)面向?qū)ο蟮乃悸?/strong>

(3)類(lèi)方法

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

#類(lèi)方法
class Person:
  def eat(self):   #類(lèi)方法
    print("eating...")
  pass

a = Person()    #類(lèi)方法調(diào)用
a.eat()

運(yùn)行結(jié)果:

eating...

(4)私有方法

只允許在類(lèi)的內(nèi)部使用,專(zhuān)門(mén)為類(lèi)服務(wù)的。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

class Person:
  def eat(self): # 類(lèi)方法
    print("eating...")
    self.__sleep() # 調(diào)用私有方法

  def __sleep(self):   #私有方法--類(lèi)的外部不能使用
    print("sleeping...")

pass

b = Person()
b.eat()

運(yùn)行結(jié)果:

eating...
sleeping...

6、屬性




示例屬性、類(lèi)屬性代碼:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

#屬性

class a():
  def __init__(self,name,age):
    self.name = name    #實(shí)例屬性
    self.age = age

  #類(lèi)內(nèi)部使用實(shí)例屬性 self.實(shí)例屬性名
  def get(self):
    print(self.name)

a1 = a("Jack",18)

#類(lèi)內(nèi)部使用實(shí)例屬性 self.實(shí)例屬性名
a1.get()

#類(lèi)外部使用實(shí)例屬性 對(duì)象名.實(shí)例屬性名
print(a1.name)

#類(lèi)屬性  在__init__()方法外聲明
#類(lèi)內(nèi)部使用 類(lèi)名.屬性名 調(diào)用
#類(lèi)外部使用通過(guò) 類(lèi)名.屬性名 或者 對(duì)象名.屬性名 方式調(diào)用

class b():
  name = "Janne"   #類(lèi)屬性

  #類(lèi)內(nèi)部使用類(lèi)屬性——類(lèi)名.屬性名
  def get(self):
    print(b.name)

#類(lèi)外部使用類(lèi)屬性 通過(guò) 類(lèi)名.屬性名
print(b.name)

#類(lèi)外部使用類(lèi)屬性 通過(guò) 對(duì)象名.屬性名
b1 = b()
print(b1.name)

#類(lèi)內(nèi)部使用類(lèi)屬性——類(lèi)名.屬性名
b1.get()

運(yùn)行結(jié)果:

Jack
Jack
Janne
Janne
Janne

(1)類(lèi)屬性/類(lèi)變量:在類(lèi)的外部可以調(diào)用

(2)私有變量/私有屬性:只能在類(lèi)的內(nèi)部,通過(guò)self使用

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

#屬性/變量
class Person:
  i = 10     #類(lèi)屬性/類(lèi)變量
  __j = 20    #私有屬性/私有變量

  def eat(self): # 類(lèi)方法
    print("eating...")
    print(self.__j) # 調(diào)用私有變量

pass

b = Person()
print(b.i)     #通過(guò)引用調(diào)用(建議)
print(Person.i)   #可通過(guò)類(lèi)名調(diào)用
b.eat()

運(yùn)行結(jié)果:

10
10
eating...
20


class GirlFriend():
  #聲明對(duì)象屬性 通過(guò)構(gòu)造方法
  def __init__(self,name,age,phone,pwd):
    #給對(duì)象的屬性(變量名)前面加上 __ 成為了私有的屬性
    self.__name = name
    self.__age = age
    self.__phone = phone
    self.__pwd = pwd

  #通過(guò)預(yù)留的接口 對(duì)私有屬性名進(jìn)行訪問(wèn)或修改
  def getInfo(self,pwd):
    if pwd == "1234":
      print("My girlfriend is %s,and she's %d years old,Her telephone number is %d"%(self.__name,self.__age,self.__phone))
    else:
      print("you failed...")

  def setName(self,name):
    self.__name = name   #類(lèi)內(nèi)修改私有屬性

gf = GirlFriend("Janne",18,13511112222,"1234")
gf.setName("Malianna")
gf.getInfo("1234")

運(yùn)行結(jié)果:

My girlfriend is Malianna,and she's 18 years old,Her telephone number is 13511112222


(3)特殊的類(lèi)屬性


7、繼承

Python中支持多繼承,作用:復(fù)用,不建議使用多繼承(類(lèi)對(duì)象爆炸)、


繼承示例代碼:

#繼承
#父類(lèi)
class Animal():
  def __init__(self,name,food,drinks):
    self.name = name
    self.food = food
    self.drinks = drinks

  def eat(self):
    print("%s 愛(ài)吃 %s" %(self.name,self.food))

  def drink(self):
    print("%s 愛(ài)喝 %s" %(self.name,self.drinks))


#子類(lèi)
class Dog(Animal):

  def sound(self):
    print("wonf wonf...")

class Cat(Animal):

  def sound(self):
    print("miao miao...")

dogs = Dog("哮天犬","骨頭","雪碧")
dogs.eat()
dogs.drink()
dogs.sound()

print("========================")
cats = Cat("波斯貓","魚(yú)","可樂(lè)")
cats.eat()
cats.drink()
cats.sound()

運(yùn)行結(jié)果:

哮天犬 愛(ài)吃 骨頭
哮天犬 愛(ài)喝 雪碧
wonf wonf...
========================
波斯貓 愛(ài)吃 魚(yú)
波斯貓 愛(ài)喝 可樂(lè)
miao miao...

示例一:

多繼承


#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

#多繼承

class Run3000:
  def run(self):
    print("run 3000")

class Jump3:
  def jump(self):
    print("jump 3")

class Sport(Run3000,Jump3):   #繼承
  pass

sport = Sport()
sport.run()
sport.jump()

運(yùn)行結(jié)果:

run 3000
jump 3

示例二:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

class Father:
  def __init__(self):
    print("father 構(gòu)造")
  def teach(self):
    print("father teaching")

class Child(Father):
  pass

zs = Child()    #子類(lèi)繼承與父類(lèi),創(chuàng)建子類(lèi)前先創(chuàng)建父類(lèi)
zs.teach()

運(yùn)行結(jié)果:

father 構(gòu)造
father teaching

子類(lèi)中重寫(xiě)父類(lèi)的方法:重寫(xiě)體現(xiàn)多態(tài)


#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

class Father:
  def __init__(self):
    print("father 構(gòu)造")
  def teach(self):
    print("father teaching")

class Child(Father):
  def teach(self):    #方法重寫(xiě)
    print("child teaching")

zs = Child()    #子類(lèi)繼承與父類(lèi),創(chuàng)建子類(lèi)前先創(chuàng)建父類(lèi)
zs.teach()

運(yùn)行結(jié)果:

father 構(gòu)造
child teaching

新式類(lèi):

如果父類(lèi)的構(gòu)造方法帶參數(shù),則需要子類(lèi)通過(guò)super操作去完成調(diào)用。


#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

#新式類(lèi)
class Father(object):
  def __init__(self,i):
    print("father 構(gòu)造"+ i)
  def teach(self):
    print("father teaching")

class Child(Father):
  def __init__(self):
    super(Child,self).__init__("hello")
  def teach(self):    #方法重寫(xiě)
    print("child teaching")

zs = Child()    #子類(lèi)繼承與父類(lèi),創(chuàng)建子類(lèi)前先創(chuàng)建父類(lèi)
zs.teach()

#運(yùn)行結(jié)果:
father 構(gòu)造hello
child teaching

運(yùn)行結(jié)果:

father 構(gòu)造hello
child teaching

多繼承又不完全,父類(lèi)都有構(gòu)造方法時(shí),當(dāng)子類(lèi)多繼承時(shí),只有一個(gè)父類(lèi)的構(gòu)造方法被調(diào)用。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

class Run3000:
  def __init__(self):
    print("run 3000 構(gòu)造方法")
  def run(self):
    print("run 3000")

class Jump3:
  def __init__(self):
    print("jump 3 構(gòu)造方法")
  def jump(self):
    print("jump 3")

class Sport(Run3000,Jump3):   #繼承
  pass

sport = Sport()
sport.run()
sport.jump()

運(yùn)行結(jié)果:

run 3000 構(gòu)造方法
run 3000
jump 3

8、面向?qū)ο缶幊?/strong>

(1)定義

(2)示例代碼——人開(kāi)車(chē)



更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python人工智能tensorflow函數(shù)np.random模塊使用

    python人工智能tensorflow函數(shù)np.random模塊使用

    這篇文章主要為大家介紹了python人工智能tensorflow函數(shù)np.random模塊使用方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 基于tkinter中ttk控件的width-height設(shè)置方式

    基于tkinter中ttk控件的width-height設(shè)置方式

    這篇文章主要介紹了基于tkinter中ttk控件的width-height設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 利用Python操作excel表格的完美指南

    利用Python操作excel表格的完美指南

    你是不是會(huì)經(jīng)常簡(jiǎn)單且重復(fù)地操作excel表格?并且這些操作的技術(shù)含量低,下面這篇文章主要給大家介紹了關(guān)于利用Python操作excel表格的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • Python Pandas中rolling方法的使用指南

    Python Pandas中rolling方法的使用指南

    在數(shù)據(jù)分析和時(shí)間序列數(shù)據(jù)處理中,經(jīng)常需要執(zhí)行滾動(dòng)計(jì)算或滑動(dòng)窗口操作,Pandas庫(kù)提供了rolling方法,用于執(zhí)行這些操作,下面我們就來(lái)學(xué)習(xí)一下rolling方法的具體使用吧
    2023-11-11
  • Python數(shù)據(jù)可視化實(shí)現(xiàn)正態(tài)分布(高斯分布)

    Python數(shù)據(jù)可視化實(shí)現(xiàn)正態(tài)分布(高斯分布)

    這篇文章主要介紹了Python數(shù)據(jù)可視化實(shí)現(xiàn)正態(tài)分布(高斯分布),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問(wèn)題分析

    Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并問(wèn)題分析

    這篇文章主要介紹了Python字符串的字符轉(zhuǎn)換、字符串劈分、字符串合并,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Python利用Turtle庫(kù)繪制一顆櫻花樹(shù)

    Python利用Turtle庫(kù)繪制一顆櫻花樹(shù)

    后唐李煜曾說(shuō)道,櫻花落盡春將困,秋千架下歸時(shí)。漏暗斜月遲遲,花在枝。櫻花落盡的時(shí)候春天也將過(guò)去了,秋千架下歸去時(shí)。天上的斜月姍姍來(lái)遲,花還在枝頭。本文將用Python+Turtle繪制一顆櫻花樹(shù),感興趣的可以嘗試一下
    2022-04-04
  • 使用python 進(jìn)行區(qū)間取值的方法

    使用python 進(jìn)行區(qū)間取值的方法

    這篇文章主要介紹了使用python 進(jìn)行區(qū)間取值的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Python計(jì)算標(biāo)準(zhǔn)差之numpy.std和torch.std的區(qū)別

    Python計(jì)算標(biāo)準(zhǔn)差之numpy.std和torch.std的區(qū)別

    Torch自稱(chēng)為神經(jīng)網(wǎng)絡(luò)中的numpy,它會(huì)將torch產(chǎn)生的tensor放在GPU中加速運(yùn)算,就像numpy會(huì)把a(bǔ)rray放在CPU中加速運(yùn)算,下面這篇文章主要給大家介紹了關(guān)于Python?Numpy計(jì)算標(biāo)準(zhǔn)差之numpy.std和torch.std區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Pytorch上下采樣函數(shù)--interpolate用法

    Pytorch上下采樣函數(shù)--interpolate用法

    這篇文章主要介紹了Pytorch上下采樣函數(shù)--interpolate用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07

最新評(píng)論