第039讲: 类和对象:拾遗 | 学习记录(小甲鱼零基础入门学习Python)

(标答出处: 鱼C论坛)
《零基础入门学习Python》

测试题:
在这里插入图片描述
答 :python的继承机制很有用,但是容易把代码复杂化以及以来隐含继承。所以,在使用的时候,可以使用组合(组成)来代替继承,使用方法很简单,只需要在类的定义中把需要的类放进去实例化就行了。
在这里插入图片描述
在这里插入图片描述
答:根据实际场合决定,组合用于“有一个”的场景中,继承用于“是一个”的场景中。例如:

水池中有乌龟,鱼,青蛙,应该使用组合;因为乌龟,鱼,青蛙和水池不是同一种东西;
企鹅和鸟类应该用继承,因为企鹅是鸟类的一种。
在这里插入图片描述
答:如果对象的属性名和方法相同,属性会覆盖方法。 例如:
在这里插入图片描述
在这里插入图片描述
答:
类属性 :num、count
实例属性:x、y
在这里插入图片描述
答:因为python只有拥有实例才能调用方法,所以python会自动把bb作为第一个参数传入导致错误。 改正如下:

class BB :
	def printBB(self):
		print ("no zuo no die")

>>>bb = BB()
>>>bb.printBB()
no zuo no die

动动手:
在这里插入图片描述

class C :
    count = 0
    def __init__ (self) :
        C.count += 1
    def __del__(self) :
        C.count -= 1

a = C()
b = C() 
c = C()
print (C.count)
del a
print (C.count)
del b
print (C.count)
del c
print (C.count)

运行结果:

在这里插入图片描述
在这里插入图片描述

class Stack :
    def __init__ (self,start=[]) :
        self.stack = []
        for x in start :
            self.push(x)
    
    def isEmpty(self) :
        return not self.stack
    
    def push(self , obj) :
        self.stack.append(obj) 
        print ("当前加入的元素为:%s " %(obj) )
    
    def pop(self) :
        if not self.stack :
            print ("警告:栈为空!")
        else :
            print ("当前删除的元素为:%s " %(self.stack.pop()))

    def top(self) :
        if not self.stack:
            print ("警告:栈为空!")
        else :
            print ("当前栈顶元素为:%s " %(self.stack[-1])) 
    
    def bottom(self) :
        if not self.stack:
            print ("警告:栈为空!")
        else :
            print ("当前栈底元素为:%s "  %(self.stack[0])) 

a = Stack([1,2,3,4])
a.top() #显示当前栈顶元素
a.bottom() #显示当前栈底元素
a.push(5) #压入5数据到栈顶
a.top() #显示当前栈顶元素
a.bottom() #显示当前栈底元素
a.pop() #弹出一个数据
a.top() #显示栈顶元素
a.bottom() #显示当前栈底元素

运行结果:在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38970783/article/details/88033727