• 速战速决 Python python 类: 基础


    速战速决 Python https://github.com/webabcd/PythonSample
    作者 webabcd

    速战速决 Python - python 类: 基础

    示例如下:

    class/class1.py

    class Class1:
    
        # 双下划线开头用于定义私有属性(外部不能调用,子类也不能调用)
        __id = ""
        
        # 定义公共属性
        country = ""
    
        # 通过 __init__ 定义构造函数
        # 第一个参数必须是 self(调用时不需传此参数,此参数的名称可以任意指定)
        def __init__(self, name, age):
            # 定义公共属性,并赋值
            self.name = name
            # 定义公共属性,并赋值
            self.age = age
            
            self.__id = "0001"
    
        # 定义公共函数
        # 第一个参数必须是 self
        def toString(self):
            return self.__getString()
    
        # 双下划线开头用于定义私有函数(外部不能调用,子类也不能调用)
        # 第一个参数必须是 self(调用时不需传此参数,此参数的名称可以任意指定)
        def __getString(self):
            return f"id:{self.__id}, name:{self.name}, age:{self.age}, country:{self.country}"
    
        # 定义 [] 方式的操作逻辑
        __dict = {}
        def __setitem__(self, name, value): 
            self.__dict[name] = "myvalue_" + value 
        def __getitem__(self, name): 
            if self.__dict.__contains__(name):
                return self.__dict[name]
            return None
        def __delitem__(self, name): 
            del self.__dict[name] 
    

    class/class2.py

    class Class2:
    
        def __init__(self, level):
            self.level = level
    

    class/class3.py

    # 从 class1.py 文件中导入 Class1 类
    from class1 import Class1
    # 从 class2.py 文件中导入 Class2 类
    from class2 import Class2
    
    # 类的继承,支持多继承
    class Class3(Class1, Class2):
    
        def __init__(self, name, age, level):
            # 调用基类的构造函数
            Class1.__init__(self, name, age)
            Class2.__init__(self, level)
    
        # 重写基类的函数
        def toString(self):
            return f"name:{self.name}, age:{self.age}, level:{self.level}"
    
    
    '''
    注:
    如果多个基类有相同的函数的话,那么你调用的时候调用的是哪个呢?
    调用的是前面的那个类的函数
    比如 class MyClass(a, b, c):
    a, b, c 中有相同的函数,那么你调用会是 a 中的函数
    '''
    

    class/demo.py

    # 从 class1.py 文件中导入 Class1 类
    from class1 import Class1
    # 从 class3.py 文件中导入 Class3 类
    from class3 import Class3
    
    # 类的使用
    a = Class1("webabcd", 30)
    a.country = "china"
    a.age = 40
    print(a.toString()) # id:0001, name:webabcd, age:40, country:china
    # 演示如何使用 [] 方式的操作(相关逻辑请看 Class1 类的代码)
    a["a"] = "abc"
    print(a["a"]) # myvalue_abc
    
    # 类的使用
    b = Class3("webabcd", 40, 100)
    b.country = "china"
    print(b.toString()) # name:webabcd, age:40, level:100
    # 调用基类的函数
    print(super(Class3, b).toString()) # id:0001, name:webabcd, age:40, country:china
    
    

    class/exception.py

    # 定义自定义异常类(需要继承 Exception)
    class MyError(Exception):
        def __init__(self, value):
            self.value = value
        def __str__(self):
            return repr(self.value)
    
    try:
        # 抛出自定义异常
        raise MyError("异常信息")
    except MyError as ex:
        print(ex)
    

    速战速决 Python https://github.com/webabcd/PythonSample
    作者 webabcd

  • 相关阅读:
    owlsuddimatchmaker安装
    类集
    jsp基本语法
    心得思路记录下
    nyoj517 最小公倍数
    poj1250 Tanning Salon
    poj1686 Lazy Math Instructor
    poj3250 Bad Hair Day
    poj1047 Round and Round We Go
    poj2359 Questions
  • 原文地址:https://www.cnblogs.com/webabcd/p/python_class_class1_class_class2_class_class3_class_demo_class_exception.html
Copyright © 2020-2023  润新知