1. 程式人生 > >面向對象-01

面向對象-01

世界 info font TP 面向 查找 arr 實現 內容

一:創建類和對象
  class f:
    def bar(self):
      print(‘bar‘)
    def hello(self, name)
      print(‘hello %s‘%name)
  fobj = f()
  fobj.bar() > ‘bar‘
  fobj.hello(‘tom‘) >‘hello tom‘

ps:類中的第一個參數必須是self,類中定義的函數叫方法
二:面向對象三大特性--封裝
#三大特性:封裝、繼承、多態
1.封裝:
  #將內容封裝到某處
  #從某處調用被封裝的內容

例1:將內容封裝到某處

技術分享圖片

解析:self是一個形式參數,當執行 fobj = F(‘tom‘,18)時,self等於fobj

例2:從某處調用封裝的內容
調用封裝的內容時,有兩種情況:
  #通過對象直接調用
  #通過間接self調用

fobj = F(‘tom‘,18)
fobj.name >>> tom 調用fobj對象的name屬性
fobj.age >>> 18  調用fobj對象的age屬性

class F:
  def __init__(self,name,age)
    self.name = name
    self.age = age
  def hello(self):
    print(self.name)
    print(self.age)
fobj = F(‘tom‘,18)
fobj.hello()
>>> tom
>>> 18


要求如下:
1.打印汽車有4個輪子
2.打印汽車是紅色的
3.打印汽車牌子是奔馳

1.打印汽車有8個輪子
2.打印汽車是白色的
3.打印汽車牌子是寶馬
#函數式編程:
def carr(num):
  print(‘汽車有%s個輪子‘%num)
def color(col):
  print(‘汽車是%s色‘ %col)
def brand(bran):
  print(‘汽車牌子是%‘%bran)
調用:
carr(4)
color(‘紅色‘)
brand(‘奔馳‘)

carr(8)
color(‘白色‘)
brand(‘寶馬‘)

#面向對象編程
class F:
  def __init__(self, carr, color, bran):
    self.carr = carr
    self.color = color
    self.bran = bran
  def carr(self):
    print(‘汽車有%s個輪子‘%self.carr)
  def color(col):1
    print(‘汽車是%s色‘ %self.color)
  def brand(bran):
    print(‘汽車牌子是%‘%self.bran)
fobj1 = F(4,‘紅色‘,‘奔馳‘)
fobj1.carr()
fobj1.color()
fobj1.brand()

fobj2 = F(8,‘白色‘,‘寶馬‘)
fobj1.carr()
fobj1.color()
fobj1.brand()

三.1:面向對象的三大特性--繼承

#繼承:面向對象中的繼承和現實世界的繼承相同,即:子可以繼承父的內容
例子:
  #貓
  class cat:
    def voice(self):
      print(‘喵~~~~‘)
    def eat(self):
      print(‘吃‘)
    def drink(self):
      print(‘喝‘)
    def pull(self):
      print(‘拉‘)
  #狗
  class dog:
    def voice(self):
      print(‘汪~~~~‘)
    def eat(self):
      print(‘吃‘)
    def drink(self):
      print(‘喝‘)
    def pull(self):
      print(‘拉‘)

由此看出,貓和狗都具備了相同的 吃、喝、拉的功能,只有叫聲不同,那麽可以利用繼承的思想,將這些相同的功能進行提煉出來:
  #動物
  class Animals:
    def eat(self):
      print(‘吃‘)
    def drink(self):
      print(‘喝‘)
    def pull(self):
      print(‘拉‘)
  #貓
  class cat(Animals):
    def voice(self):
      print(‘喵~~~~~‘)
  class dog(Animals):
    def voice(self):
      print(‘汪~~~~‘)

  cat = cat()
  cat.eat() >>> 吃
  cat.drink() >>> 喝
  cat.pull() >>> 拉
  
由此可見,父類將相同的方法進行整合,子類僅需繼承父類就可以獲得這些方法而不必一一去實現每個方法

三.2: 多繼承:

#繼Python可以繼承多個類
#Python的類如果繼承了多個類,那麽尋找方法的方式有兩種:深度優先廣度優先
技術分享圖片
  #當類是經典類時,多繼承,優先按照深度優先方式查找
  #當類是新式類時,多繼承,優先按照廣度優先方式查找





  

面向對象-01