• Python3 类和对象:拾遗


    1、组合

    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、什么时候用组合什么时候用继承

    当类与类相似时可以用一个新的类继承以有的的类(并列关系)

    当需要一个新的类时包含已有的类时需要用到组合,就像池塘鱼乌龟的关系(自己的理解,有问题请指出)

    2、类对象的产生

    当一个类定义完成后,类定义就变成了类对象。类对象时可以用类名直接表示的对象,它有两种操作,直接类属性的操作和实例化。对于类属性的使用可以直接使用“类名.属性”的方法,而对类方法的使用则需要实例化一个对象才能使用,即需要传入一个self参数才能使用

    举例

    class C:#新建一个C类
        t=0#类属性
        def x(self):#类方法
            print('Xman')
    
    
    >>> C.t#使用类名(类对象)可以直接调用类属性
    0
    #但是使用类对象调用方法则会报错因为缺少self参数,所以需要实例化后才能调用类方法
    >>> C.x()
    Traceback (most recent call last):
      File "<pyshell#1>", line 1, in <module>
        C.x()
    TypeError: x() missing 1 required positional argument: 'self'
    
    #实例化后调用类方法
    >>> a=C()
    >>> a.x()
    Xman

    3、对象的属性名和方法应该不同名,如果同名属性会覆盖方法

    class C:
            def x(self):
                    print('Xman')
    
    >>> c = C()
    >>> c.x()
    Xman
    >>> c.x = 1
    >>> c.x
    1
    >>> c.x()
    Traceback (most recent call last):
      File "<pyshell#20>", line 1, in <module>
        c.x()
    TypeError: 'int' object is not callable

    例题:

    定义一个类对象跟中该类有多少个实例被创建

    class C:
        count=0
        def __init__(self):
            self.count+=1#self可以改为C
        def __del__(self):
            self.count-=1#self可以改为C
    
    
    >>> a=C()
    >>> a.count
    1
    >>> del a
    >>> C.count
    0
  • 相关阅读:
    SQLSever语句(增、删、改、查)一、增:有4种方法1.使用insert插入单行数据
    Java-IDEA环境搭建swagger
    Kettle Rest大文件上传(RestUploadFile.ktr) Rest文件下载(FileDownload.ktr)
    Mybatis find_in_set 子查询,替代 in
    Kettle-Spoon入门示例
    TruncateTable数据库清理
    域账户密码登录验证
    数据库表新增触发器
    第一个Delphi小程序
    Java 方法重载
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/8424234.html
Copyright © 2020-2023  润新知