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