最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3.5面向對象與繼承圖文實例詳解

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

本文實例講述了Python3.5面向對象與繼承。分享給大家供大家參考,具體如下:

1、編程的方式


2、面向對象的基本概念




3、類的基本概念




4、類的定義與調用——簡單代碼舉例

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





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

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

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

運行結果:

eating...

class Person():
  #對象屬性 構造方法 在實例化對象時會自動調用
  # 實例化的對象就具有name和age兩個屬性
  #self是指當前的對象 self不是關鍵字可以被代替,但是習慣使用self指代當前對象
  def __init__(self,name,age):
    # 通過構造方法聲明了兩個對象屬性
    #對象.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ā)構造方法
people01 = Person("Jack",18)    #通過Person類實例化出一個people對象
print(people01)   #打印Person對象在內存中的地址

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

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

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

運行結果:

<__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()   #通過實例調用靜態(tài)方法
S.test2()    #通過類名調用靜態(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)    #類方法調用類屬性


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

運行結果:

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


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

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

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


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

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

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

運行結果

構造方法

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

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

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

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

  pass

zs = Person("hello")  #類的調用--創(chuàng)建對象
zs.add(1,2)

 運行結果:

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

(2)面向對象的思路

(3)類方法

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

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

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

運行結果:

eating...

(4)私有方法

只允許在類的內部使用,專門為類服務的。

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

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

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

pass

b = Person()
b.eat()

運行結果:

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

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

a1 = a("Jack",18)

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

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

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

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

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

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

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

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

運行結果:

Jack
Jack
Janne
Janne
Janne

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

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

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

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

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

pass

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

運行結果:

10
10
eating...
20


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

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

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

運行結果:

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


(3)特殊的類屬性


7、繼承

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


繼承示例代碼:

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

運行結果:

哮天犬 愛吃 骨頭
哮天犬 愛喝 雪碧
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()

運行結果:

run 3000
jump 3

示例二:

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

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

class Child(Father):
  pass

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

運行結果:

father 構造
father teaching

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


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

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

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

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

運行結果:

father 構造
child teaching

新式類:

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


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

#新式類
class Father(object):
  def __init__(self,i):
    print("father 構造"+ 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()

#運行結果:
father 構造hello
child teaching

運行結果:

father 構造hello
child teaching

多繼承又不完全,父類都有構造方法時,當子類多繼承時,只有一個父類的構造方法被調用。

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

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

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

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

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

運行結果:

run 3000 構造方法
run 3000
jump 3

8、面向對象編程

(1)定義

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



更多關于Python相關內容感興趣的讀者可查看本站專題:《Python面向對象程序設計入門與進階教程》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》及《Python入門與進階經(jīng)典教程

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

相關文章

  • python定時關機小腳本

    python定時關機小腳本

    這篇文章主要為大家詳細介紹了python定時關機小腳本,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python對字符串實現(xiàn)去重操作的方法示例

    Python對字符串實現(xiàn)去重操作的方法示例

    字符串去重是python中字符串操作常見的一個需求,最近在工作中就又遇到了,所以下面這篇文章主要給大家介紹了關于Python對字符串實現(xiàn)去重操作的相關資料,文中給出了詳細的介紹,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Python+Pika+RabbitMQ環(huán)境部署及實現(xiàn)工作隊列的實例教程

    Python+Pika+RabbitMQ環(huán)境部署及實現(xiàn)工作隊列的實例教程

    RabbitMQ是一個消息隊列服務器,在本文中我們將學習到Python+Pika+RabbitMQ環(huán)境部署及實現(xiàn)工作隊列的實例教程,需要的朋友可以參考下
    2016-06-06
  • python 爬蟲出現(xiàn)403禁止訪問錯誤詳解

    python 爬蟲出現(xiàn)403禁止訪問錯誤詳解

    這篇文章主要介紹了 python 爬蟲解決403禁止訪問錯誤的相關資料,需要的朋友可以參考下
    2017-03-03
  • Python BeautifulSoup [解決方法] TypeError: list indices must be integers or slices, not str

    Python BeautifulSoup [解決方法] TypeError: list indices must be

    這篇文章主要介紹了Python BeautifulSoup [解決方法] TypeError: list indices must be integers or slices, not str,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python中的內置函數(shù)isdigit()

    Python中的內置函數(shù)isdigit()

    這篇文章主要介紹了Python中的內置函數(shù)isdigit(),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python中連通域分割Two-Pass算法的原理與實現(xiàn)詳解

    Python中連通域分割Two-Pass算法的原理與實現(xiàn)詳解

    兩遍掃描法(?Two-Pass?),正如其名,指的就是通過掃描兩遍圖像,將圖像中存在的所有連通域找出并標記,本文將詳細介紹Two-Pass算法的原理與實現(xiàn),需要的可以參考下
    2023-12-12
  • python解壓TAR文件至指定文件夾的實例

    python解壓TAR文件至指定文件夾的實例

    今天小編就為大家分享一篇python解壓TAR文件至指定文件夾的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 基于pandas向csv添加新的行和列

    基于pandas向csv添加新的行和列

    這篇文章主要介紹了基于pandas向csv添加新的行和列,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • GPU狀態(tài)監(jiān)測?nvidia-smi?命令的用法詳解

    GPU狀態(tài)監(jiān)測?nvidia-smi?命令的用法詳解

    這篇文章主要介紹了GPU狀態(tài)監(jiān)測?nvidia-smi?命令的用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

米林县| 静宁县| 竹溪县| 睢宁县| 白朗县| 杨浦区| 辰溪县| 新邵县| 台东市| 敖汉旗| 石柱| 永和县| 芷江| 巴彦淖尔市| 九龙坡区| 通渭县| 酒泉市| 花垣县| 雅安市| 鹤峰县| 五华县| 吉水县| 绍兴县| 长海县| 南投县| 都江堰市| 忻城县| 社旗县| 周口市| 油尖旺区| 宝鸡市| 凤凰县| 黄龙县| 卢氏县| 崇明县| 贵阳市| 丰台区| 绥宁县| 长宁县| 卓资县| 咸丰县|