python: 面向對象:類和對象調用類中的變量和方法


一. 面向對象初識

   我們在生活中做事都是面向過程的,前面實現一些基本邏輯功能代碼也是用面向過程的語句實現的,后來學了函數,把這些功能又裝到了函數里。但用面向過程的方法去寫程序,只能實現一個功能,我們要實現很多功能時,需要寫很多個代碼塊,每一個代碼塊的作用域都是全局的,要相對一個功能進行改動,還要考慮與其它代碼塊的聯系,這樣就造成了代碼的可擴展性和維護性。那么裝到函數里就好了嗎?裝到函數里變量只能作用於函數里,其他的函數無法使用到該函數的變量。這時可以用面向對象的程序設計方法解決這些問題。面向對象的核心是對象,用對象來操控類里面的方法(函數)和變量,加上類還具有繼承、封裝、多態三大特性,提高了代碼的復用性和規范性。

 

二. 類,對象

1. 類

  語法:  class 類名:

        類體

  類體:兩部分:變量部分(靜態變量),方法(函數)部分

#定義一個類
class name:
    pass

2. 對象

   類名()就是對象, 類名()的這個過程:實例化的過程(創建一個對象的過程),

class name:
    pass
name()  # 對象創建

 

三. 類,對象調用類中的變量和方法.

1. 類調用類中的變量和方法

(1) __dict__方法(操作類中的靜態變量):只能查詢不能增、刪、改。

class Person:
    mind = '有思想'
    belif = '有信仰'
    animal = '高級動物'


print(Person.__dict__)  # 查詢類Person中所有的內容,展現形式是字典.
print(Person.__dict__['belif'])  # 查詢類Person中的變量'belif'
# Person.__dict__['belif'] = '無信仰'  # 修改變量'belif'的值會報錯

(2). 萬能的點: .

class Person:
    mind = '有思想'
    belif = '有信仰'
    animal = '高級動物'
    def work():
        print('666')
    def money():
        print('777')

print(Person.animal)  # 高級動物
print(Person.mind)  # 有思想
Person.mind = '沒有思想'  # 修改變量'mind'的值,可以通過Person.__dict__查看修改后的內容
Person.pay = '貨幣交換'  # 增加變量'pay'和它的值,可以通過Person.__dict__查看增加后的內容
Person.say = '語言交流'
print(Person.work())  # 也可以調用類中的方法(函數),一般不用類名去操作
print(Person.__dict__)  # 查看類中所有的內容

2. 對象調用類中的變量和方法

  __init__方法是一個特殊的方法,只要類名+() 產生一個對象,自動執行類中的__init__方法,並把類的地址傳給方法里的第一個參數,約定把第一個參數定為'self', 再給對象封裝相應的屬性.

(1) __dict__ 查詢對象中的所有的內容

(2)  萬能的點: .

class Person:
    mind = '有思想'
    belif = '有信仰'
    animal = '高級動物'
    def __init__(self, name,age,hobby):
        self.name = name
        self.age = age
        self.hobby = hobby
        print(name,age,hobby)
    def work(self):
        print('會工作')
        return self
    def money(self):
        print('會消費')
        print(self)


ret = Person('jack',22, '敲鍵盤')  # 類名+() 的這個過程:實例化的過程(創建一個對象的過程)
# jack 22 敲鍵盤
print(ret) # Person()創建一個對象空間,把這個空間的地址賦值給ret # <__main__.Person object at 0x0000021248F46550>
print(ret.__dict__) # 查詢對象中所有的內容: {'name': 'jack', 'age': 22, 'hobby': '敲鍵盤'} print(Person.work(111)) # 調用方法,並把111傳給self,(一般通過對象調用類的方法,而不是類)
 # 會工作 # 111 # print(Person.money()) 類調用方法時不傳參數會報錯
ret.work()  # 對象可以直接調用類中的方法不用給self傳參
# 會工作

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM