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

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

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

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

1、編程的方式


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




3、類的基本概念




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

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





#!/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()

運行結(jié)果:

eating...

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

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

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

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

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

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

運行結(jié)果:

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

5、類的方法



示例代碼:

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

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

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


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

  #實例(對象)屬性
  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()   #通過實例調(diào)用類方法
C.test3()    #通過類名調(diào)用類方法

運行結(jié)果:

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


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

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

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


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

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

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

運行結(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)

 運行結(jié)果:

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

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

(3)類方法

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

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

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

運行結(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()

運行結(jié)果:

eating...
sleeping...

6、屬性




示例屬性、類屬性代碼:

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

#屬性

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

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

a1 = a("Jack",18)

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

#類外部使用實例屬性 對象名.實例屬性名
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()

運行結(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()

運行結(jié)果:

10
10
eating...
20


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

  #通過預(yù)留的接口 對私有屬性名進行訪問或修改
  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")

運行結(jié)果:

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


(3)特殊的類屬性


7、繼承

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


繼承示例代碼:

#繼承
#父類
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()

運行結(jié)果:

哮天犬 愛吃 骨頭
哮天犬 愛喝 雪碧
wonf wonf...
========================
波斯貓 愛吃 魚
波斯貓 愛喝 可樂
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()

運行結(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()

運行結(jié)果:

father 構(gòu)造
father teaching

子類中重寫父類的方法:重寫體現(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):    #方法重寫
    print("child teaching")

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

運行結(jié)果:

father 構(gòu)造
child teaching

新式類:

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


#!/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()

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

運行結(jié)果:

father 構(gòu)造hello
child teaching

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

運行結(jié)果:

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

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

(1)定義

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



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

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

相關(guān)文章

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

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

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

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

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

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

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

    Python Pandas中rolling方法的使用指南

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

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

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

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

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

    Python利用Turtle庫繪制一顆櫻花樹

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

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

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

    Python計算標準差之numpy.std和torch.std的區(qū)別

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

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

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

最新評論