[Python]小甲鱼Python视频第039课(类和对象:拾遗 )课后题及参考解答

# -*- 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()

    

  

~不再更新,都不让我写公式,博客园太拉胯了
原文地址:https://www.cnblogs.com/alimy/p/10520499.html