1. 程式人生 > >[Python]小甲魚Python視頻第039課(類和對象:拾遺 )課後題及參考解答

[Python]小甲魚Python視頻第039課(類和對象:拾遺 )課後題及參考解答

error peer 源代碼 die 學習 true 動手 刪除 繼承

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 12 23:09:01 2019

@author: fengs
"""

"""
測試題:
0. 什麽是組合(組成)?
    完全忘記了-------> 就是把類的屬性賦值成其他類的實例化對象

1. 什麽時候用組合,什麽時候用繼承?
    完全忘記了  -----> 繼承,只繼承一個 組合-基本都可用,反正大家都是對象
    
2. 類對象是在什麽時候產生?
    類的源代碼加載進內存時類對象就產生了,不需要實例化對象
    
3. 如果對象的屬性跟方法名字相同,會怎樣?
    屬性會覆蓋方法
    
4. 請問以下類定義中哪些是類屬性,哪些是實例屬性?
class C:
        num = 0
        def __init__(self):
                self.x = 4
                self.y = 5
                C.count = 6


num 和 count 是類屬性
x 和 y  是實例屬性


5. 請問以下代碼中,bb 對象為什麽調用 printBB() 方法失敗?
class BB:
        def printBB():
                print("no zuo no die")

>>> bb = BB()
>>> bb.printBB()
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    bb.printBB()
TypeError: printBB() takes 0 positional arguments but 1 was given


實例方法的輸入參數中應該有self對象傳入,沒有指定方法的實例


"""


"""
0. 思考這一講我學習的內容,請動手在一個類中定義一個變量,用於跟蹤該類有多少個實例被創建(當實例化一個對象,這個變量+1,當銷毀一個對象,這個變量自動-1)。
"""
class Test():
    object_count = 0
    
    def __init__(self):
        Test.object_count += 1
        print(‘object_count = %d‘ % Test.object_count)
    def __del__(self):
        Test.object_count -= 1
        print(‘object_count = %d‘ % Test.object_count)
        
        
test1 = Test()
test2 = Test()
del(test1)
del(test2)


"""
1. 定義一個棧(Stack)類,用於模擬一種具有後進先出(LIFO)特性的數據結構。至少需要有以下方法:
isEmpty()	判斷當前棧是否為空(返回 True 或 False)
push()	往棧的頂部壓入一個數據項
pop()	從棧頂彈出一個數據項(並在棧中刪除)
top()	顯示當前棧頂的一個數據項
bottom()	顯示當前棧底的一個數據項
"""

class Stack():
    def __init__(self):
        self.stackMemory = list()
    def isEmpty(self):
        return len(self.stackMemory) == 0
    def push(self,data):
        self.stackMemory.append(data)
    def pop(self):
        if self.isEmpty() == False:
            return self.stackMemory.pop()
        else:
            print(‘此棧已經為空,無法進行彈出操作‘)
            return None
    def top(self):
        if self.isEmpty() == False:
            print(‘當前棧頂元素為 ‘,end = ‘ ‘)
            print(self.stackMemory[-1])
        else:
            print(‘此棧已經為空,無法進行棧頂查詢操作‘)
    def buttom(self):
        if self.isEmpty() == False:
            print(‘當前棧底元素為 ‘,end = ‘ ‘)
            print(self.stackMemory[0])
        else:
            print(‘此棧已經為空,無法進行棧底查詢操作‘)
  
stack = Stack()
stack.push(1)
stack.push([1,])
stack.push((1,2))
stack.top()
stack.buttom()

    

  

[Python]小甲魚Python視頻第039課(類和對象:拾遺 )課後題及參考解答