初識面向對象

1、面向對象與面向過程

1.面向過程

  • 特色:一切以事物的流程爲核心
  • 優勢:負責的問題流程化,編寫相對簡單
  • 缺點:可擴展性差

2.面向對象

  • 特色:一切以對象爲中心
  • 優勢:可擴展性強
  • 缺點:編程的複雜度高於面向過程

2、類與對象

1.類

  • 類是對事物的總結,抽象的概念,類用來描述對象
  • __init__():稱爲初始化方法,對對象進行初始化操做,建立對象的時候自動調用這個方法

2.對象

  • 對象是類的實例化的結果
  • 對象能執行哪些方法,都由類來決定,類中定義了什麼,對象就擁有什麼
class User(object):
    def __init__(self, username, password):
        self.username = username
        self.password = password

    def login(self, uname, pwd):
        if self.username == uname and self.password == pwd:
            return True
        else:
            return False


u1 = User("嘗試了就好", "123")
ret = u1.login(input("username:").strip(), input("password:").strip())
print(ret)

3. 建立對象

xxx = 類名()編程

  • 先自動執行__new__()來開闢內存,此時新開闢出來的內存區域是空的
  • 再自動調用__init__()來完成對象的初始化工做

3、面向對象三大特徵

1.封裝

  • 在面向對象思想中,是把一些看似可有可無的內容組合到一塊兒統一進行存儲和使用。面向對象中表現爲對屬性和方法進行封裝

2.繼承

  • 子類能夠自動擁有父類中除了私有屬性外的其餘全部內容
  • 一個類能夠同時繼承多個父類
class Animal(object):

    def run(self):
        print("----run----")


class Cat(Animal):
    pass

cat = Cat()
cat.run()  # ----run----

3.多態

  • 同一個對象,多種形態
class Animal(object):
    def run(self):
        print("Animal is running...")


class Dog(Animal):
    def run(self):
        print("Dog is running...")


class Cat(Animal):
    def run(self):
        print("Cat is running...")


class Observer():
    def observe(self, animal):
        animal.run()


dg = Dog()
ct = Cat()

ob = Observer()
ob.observe(dg)
ob.observe(ct)

結果:
Dog is running...
Cat is running...
相關文章
相關標籤/搜索