zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    ZKEACMS 的两种发布方式
    一步一步教你如何制件 ZKEACMS 的扩展组件/插件
    三张图片看懂ZKEACMS的设计思想
    ZKEACMS 模板组件扩展
    ZKEACMS 如何使用组件自定义样式/编辑样式
    关于简单的Excel多页签底层导出_电子底账导出为例(.net core)
    Javascript中,数学方法可以分成以下几类: constans(常数)、power functions(乘方函数)、trigonometic functions(三角函数)、rounding functions(舍入函数)、random numbers(随机数字)
    AutoCAD.Net/C#.Net QQ群:193522571 对字符串进行四则运算
    AutoCAD.Net/C#.Net QQ群:193522571 利用反射将父类中的属性传递到子类中,实测效率不高
    AutoCAD.Net/C#.Net QQ群:193522571 将DataTable集合 B加入到DataTable A中,应用于两个或以上的只有单行数据的无主键的datatable的合并 Merge
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/10029970.html
Copyright © 2011-2022 走看看