python类与对象的组合与继承

1、把类的对象实例化放到一个新的类里面叫做类的组合组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定。简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景中。例如,水池里有一个乌龟,天上有一个鸟,地上有一个小甲鱼,这些适合使用组合。青瓜是瓜,女人是人,鲨鱼是鱼,这些就应该使用继承啦实例如下:

class Turtle:

    def __init__(self,x):

        self.num = x

class Fish:

    def __init__(self,x):

        self.num = x

class Pool:

    def __init__(self, x, y):

        self.turtle = Turtle(x)

        self.fish = Fish(y)

    def print_num(self):

        print("水池总共有乌龟 %d 只,小鱼 %d 只" % (self.turtle.num,self.fish.num))

pool = Pool(1,10)

pool.print_num()

 

2、类、类对象和实例对象

当你这个类定义完的时候,类定义就变成类对象,可以直接通过“类名.属性”或者“类名.方法名()”引用或使用相关的属性或方法。

3、对于类的应用,我们一般不要试图定义出类的所有特性和方法,应该利用继承和组合的机制来进行扩展,另外,我们还可以利用不同的词性来进行命名,对于属性一般是用名词,对于方法名一般用动词。

4、绑定

Python严格要求方法需要有实例才可以被调用,这种限制其实就是python所谓的绑定

 

5、在一个类中定义一个变量,用于跟踪该类有多少个实例被创建(当实例化一个对象,这个变量+1,当销毁一个对象,这个变量自动-1):

实现代码如下:

class C:

        count = 0

        def __init__(self):

            C.count += 1

        def __del__(self):

                C.count -= 1

6、定义一个栈(Stack)类,用于模拟一种具有后进先出(LIFO)特性的数据结构。至少需要有以下方法:

方法名

含义

isEmpty()

判断当前栈是否为空(返回 True 或 False)

push()

往栈的顶部压入一个数据项

pop()

从栈顶弹出一个数据项(并在栈中删除)

top()

显示当前栈顶的一个数据项

bottom()

显示当前栈底的一个数据项

实现代码如下:

class Stack:

    def __init__(self):

        self.stack = []

    def Isempty(self):

       if len(self.stack) == 0:

          self.Isempty1=True

          print(self.Isempty1)

       else:

           self.Isempty1 = False

           print(self.Isempty1)

    def push(self,x):

        self.stack.append(x)

    def pop(self,y):

        if len(self.stack) == 0:

            print("我为空的,不能够弹出")

        else:

            self.stack.pop(y)

    def top(self):

        if len(self.stack) == 0:

             print("我为空的,不能够弹出")

        else:

            print(self.stack[len(self.stack)-1])

    def bottom(self):

        if len(self.stack) == 0:

            print("我为空的,不能够弹出")

        else:

            print(self.stack[0])

a = Stack()

a.Isempty()

a.pop(2)

a.push(3)

a.push(4)

a.push(5)

a.top()

a.bottom()

猜你喜欢

转载自www.cnblogs.com/Yanjy-OnlyOne/p/10029970.html
今日推荐