Python3.5面向?qū)ο笈c繼承的示例分析-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Python3.5面向?qū)ο笈c繼承的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)專注于云龍企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城系統(tǒng)網(wǎng)站開發(fā)。云龍網(wǎng)站建設(shè)公司,為云龍等地區(qū)提供建站服務(wù)。全流程按需制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

具體如下:

1、編程的方式

Python3.5面向?qū)ο笈c繼承的示例分析

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

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

3、類的基本概念

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

4、類的定義與調(diào)用——簡單代碼舉例

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

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

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

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

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

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

eating...

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

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

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

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

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

#類方法的調(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、類的方法

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

示例代碼:

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

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

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


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

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

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


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

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

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

Python3.5面向?qū)ο笈c繼承的示例分析

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

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

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

Python3.5面向?qū)ο笈c繼承的示例分析

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

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

Person()  #類的調(diào)用--創(chuàng)建對象

運(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")  #類的調(diào)用--創(chuàng)建對象
zs.add(1,2)

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

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

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

Python3.5面向?qū)ο笈c繼承的示例分析

(3)類方法

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

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

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

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

eating...

(4)私有方法

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

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

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

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

pass

b = Person()
b.eat()

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

eating...
sleeping...

6、屬性

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

示例屬性、類屬性代碼:

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

#屬性

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

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

a1 = a("Jack",18)

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

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

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

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

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

#類外部使用類屬性 通過 類名.屬性名
print(b.name)

#類外部使用類屬性 通過 對象名.屬性名
b1 = b()
print(b1.name)

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

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

Jack
Jack
Janne
Janne
Janne

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

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

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

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

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

pass

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

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

10
10
eating...
20

Python3.5面向?qū)ο笈c繼承的示例分析

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

  #通過預(yù)留的接口 對私有屬性名進(jì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   #類內(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

Python3.5面向?qū)ο笈c繼承的示例分析

(3)特殊的類屬性

Python3.5面向?qū)ο笈c繼承的示例分析

7、繼承

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

Python3.5面向?qū)ο笈c繼承的示例分析

繼承示例代碼:

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

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

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


#子類
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("波斯貓","魚","可樂")
cats.eat()
cats.drink()
cats.sound()

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

哮天犬 愛吃 骨頭
哮天犬 愛喝 雪碧
wonf wonf...
========================
波斯貓 愛吃 魚
波斯貓 愛喝 可樂
miao miao...

示例一:

多繼承

Python3.5面向?qū)ο笈c繼承的示例分析

#!/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()    #子類繼承與父類,創(chuàng)建子類前先創(chuàng)建父類
zs.teach()

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

father 構(gòu)造
father teaching

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

Python3.5面向?qū)ο笈c繼承的示例分析

#!/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):    #方法重寫
    print("child teaching")

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

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

father 構(gòu)造
child teaching

新式類:

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

Python3.5面向?qū)ο笈c繼承的示例分析

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

#新式類
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):    #方法重寫
    print("child teaching")

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

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

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

father 構(gòu)造hello
child teaching

多繼承又不完全,父類都有構(gòu)造方法時(shí),當(dāng)子類多繼承時(shí),只有一個(gè)父類的構(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)定義

Python3.5面向?qū)ο笈c繼承的示例分析

(2)示例代碼——人開車

Python3.5面向?qū)ο笈c繼承的示例分析

Python3.5面向?qū)ο笈c繼承的示例分析

關(guān)于“Python3.5面向?qū)ο笈c繼承的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。

網(wǎng)頁題目:Python3.5面向?qū)ο笈c繼承的示例分析-創(chuàng)新互聯(lián)
網(wǎng)址分享:http://muchs.cn/article12/dhejdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、網(wǎng)站內(nèi)鏈、定制網(wǎng)站商城網(wǎng)站、營銷型網(wǎng)站建設(shè)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)