当前位置: 代码网 > it编程>前端脚本>Python > Python内置函数object、oct()、ord()的实用指南

Python内置函数object、oct()、ord()的实用指南

2026年01月22日 Python 我要评论
一、object:所有类的"终极基类"1.1 基础特性:python的类基础object类是所有python类的基类,提供了所有类实例共有的基本方法。# 创建基础对象实例base_

一、object:所有类的"终极基类"

1.1 基础特性:python的类基础

object类是所有python类的基类,提供了所有类实例共有的基本方法。

# 创建基础对象实例
base_obj = object()
print(f"对象类型: {type(base_obj)}")  # 输出: <class 'object'>
print(f"对象标识: {id(base_obj)}")
print(f"对象哈希: {hash(base_obj)}")

# 验证object实例特性
print(f"是否有__dict__: {hasattr(base_obj, '__dict__')}")  # 输出: false
print(f"是否有__slots__: {hasattr(base_obj, '__slots__')}")  # 输出: false

# 尝试添加属性会失败
try:
    base_obj.custom_attr = "测试值"
    print("添加属性成功")
except attributeerror as e:
    print(f"添加属性失败: {e}")  # 输出: 'object' object has no attribute 'custom_attr'

# 基本方法演示
print(f"对象字符串表示: {str(base_obj)}")
print(f"对象正式表示: {repr(base_obj)}")
print(f"对象等于自身: {base_obj == base_obj}")  # 输出: true

1.2 实际应用:创建轻量级基类

class lightweightbase(object):
    """轻量级基类,使用__slots__减少内存占用"""
    __slots__ = ('x', 'y')  # 明确指定可用的属性
    
    def __init__(self, x=0, y=0):
        self.x = x
        self.y = y
    
    def __repr__(self):
        return f"lightweightbase(x={self.x}, y={self.y})"
    
    def move(self, dx, dy):
        """移动位置"""
        self.x += dx
        self.y += dy
        return self

# 使用示例
point = lightweightbase(3, 4)
print(f"创建点: {point}")
print(f"点坐标: ({point.x}, {point.y})")

# 移动点
point.move(2, -1)
print(f"移动后: {point}")

# 验证属性限制
print(f"是否有__dict__: {hasattr(point, '__dict__')}")  # 输出: false
print(f"是否有__slots__: {hasattr(point, '__slots__')}")  # 输出: true

# 无法添加未在__slots__中定义的属性
try:
    point.z = 5
    print("添加属性成功")
except attributeerror as e:
    print(f"添加属性失败: {e}")

# 对比普通类和轻量级类的内存使用
class normalclass:
    def __init__(self, x, y):
        self.x = x
        self.y = y

import sys
normal_obj = normalclass(1, 2)
lightweight_obj = lightweightbase(1, 2)

print(f"普通对象大小: {sys.getsizeof(normal_obj) + sys.getsizeof(normal_obj.__dict__)} 字节")
print(f"轻量对象大小: {sys.getsizeof(lightweight_obj)} 字节")

二、oct():八进制转换的"翻译器"

2.1 基础用法:整数转八进制字符串

oct()函数将整数转换为带"0o"前缀的八进制字符串,是进制转换的重要工具。

# 基本八进制转换
print(f"8的八进制: {oct(8)}")      # 输出: '0o10'
print(f"10的八进制: {oct(10)}")    # 输出: '0o12'
print(f"16的八进制: {oct(16)}")    # 输出: '0o20'

# 负数转换
print(f"-56的八进制: {oct(-56)}")  # 输出: '-0o70'
print(f"0的八进制: {oct(0)}")      # 输出: '0o0'

# 大整数转换
large_num = 2**20
print(f"2^20的八进制: {oct(large_num)}")

# 从十六进制数转换
hex_num = 0xff
print(f"0xff的八进制: {oct(hex_num)}")  # 输出: '0o377'

# 使用__index__方法的对象
class indexablenumber:
    def __index__(self):
        return 100

custom_obj = indexablenumber()
print(f"自定义对象转换: {oct(custom_obj)}")  # 输出: '0o144'

2.2 实际应用:文件权限和进制转换工具

class permissionconverter:
    """权限转换工具类(常用于linux文件权限)"""
    
    @staticmethod
    def chmod_to_octal(permission_str):
        """将chmod权限字符串转换为八进制数字"""
        if len(permission_str) != 9:
            raise valueerror("权限字符串必须是9个字符")
        
        # 权限映射:r=4, w=2, x=1
        perms = {'r': 4, 'w': 2, 'x': 1, '-': 0}
        
        # 每3位一组转换为八进制
        result = 0
        for i in range(0, 9, 3):
            group = permission_str[i:i+3]
            value = 0
            for char in group:
                if char in perms:
                    value += perms[char]
                else:
                    raise valueerror(f"无效权限字符: {char}")
            result = result * 10 + value  # 注意:这里构建的是十进制数,但每位代表八进制值
        
        return int(str(result), 8)  # 将字符串解析为八进制整数
    
    @staticmethod
    def octal_to_chmod(octal_permission):
        """将八进制权限转换为chmod字符串"""
        # 确保是有效的八进制权限(0-777)
        if not 0 <= octal_permission <= 0o777:
            raise valueerror("权限必须在0-777范围内")
        
        permission_str = ""
        # 转换为三位八进制字符串
        oct_str = oct(octal_permission)[2:].zfill(3)
        
        for digit in oct_str:
            value = int(digit, 8)
            # 转换为rwx格式
            bits = [
                'r' if value & 4 else '-',
                'w' if value & 2 else '-',
                'x' if value & 1 else '-'
            ]
            permission_str += ''.join(bits)
        
        return permission_str
    
    @staticmethod
    def format_octal_number(num, width=0, prefix=true):
        """格式化八进制输出"""
        if prefix:
            oct_str = oct(num)
        else:
            oct_str = format(num, 'o')
        
        if width > 0:
            # 处理前缀
            if prefix and oct_str.startswith('0o'):
                oct_str = '0o' + oct_str[2:].zfill(width)
            elif prefix and oct_str.startswith('-0o'):
                oct_str = '-0o' + oct_str[3:].zfill(width)
            elif oct_str.startswith('-'):
                oct_str = '-' + oct_str[1:].zfill(width)
            else:
                oct_str = oct_str.zfill(width)
        
        return oct_str

# 使用示例
converter = permissionconverter()

# 文件权限转换
print("=== 文件权限转换示例 ===")
permission_str = "rwxr-xr--"
octal_perm = converter.chmod_to_octal(permission_str)
print(f"权限 '{permission_str}' -> 八进制: {oct(octal_perm)}")

# 反向转换
converted_back = converter.octal_to_chmod(octal_perm)
print(f"八进制 {oct(octal_perm)} -> 权限: {converted_back}")

# 常见权限示例
common_permissions = {
    "完全开放": 0o777,    # rwxrwxrwx
    "用户读写执行,组只读,其他无": 0o740,  # rwxr-----
    "用户读写,组只读,其他只读": 0o644,   # rw-r--r--
    "仅用户读写": 0o600,    # rw-------
}

for name, perm in common_permissions.items():
    perm_str = converter.octal_to_chmod(perm)
    print(f"{name}: {oct(perm)} -> {perm_str}")

# 八进制格式化
test_numbers = [8, 10, 16, 100]
for num in test_numbers:
    formatted = converter.format_octal_number(num, width=4, prefix=true)
    print(f"{num} 的八进制: {formatted}")

三、ord():字符编码的"解码器"

3.1 基础用法:获取字符的unicode码位

ord()函数返回字符的unicode码位(整数),是字符编码处理的基础。

# 基本ascii字符
print(f"'a'的码位: {ord('a')}")      # 输出: 97
print(f"'a'的码位: {ord('a')}")      # 输出: 65
print(f"'0'的码位: {ord('0')}")      # 输出: 48
print(f"' '的码位: {ord(' ')}")      # 输出: 32(空格)

# 特殊字符
print(f"'€'的码位: {ord('€')}")      # 输出: 8364(欧元符号)
print(f"'中'的码位: {ord('中')}")    # 输出: 20013
print(f"'☆'的码位: {ord('☆')}")      # 输出: 9734

# 控制字符
print(f"'\\n'的码位: {ord('\\n')}")  # 输出: 10(换行符)
print(f"'\\t'的码位: {ord('\\t')}")  # 输出: 9(制表符)

# 字节对象(单字节)
print(f"b'a'的码位: {ord(b'a')}")    # 输出: 97
print(f"b'\\x41'的码位: {ord(b'\\x41')}")  # 输出: 65(ascii 'a')

# bytearray对象
ba = bytearray(b'x')
print(f"bytearray的码位: {ord(ba)}")  # 输出: 88

3.2 实际应用:字符编码分析和转换

class characteranalyzer:
    """字符分析工具类"""
    
    @staticmethod
    def analyze_string(text):
        """分析字符串中所有字符的编码信息"""
        results = []
        for i, char in enumerate(text):
            code_point = ord(char)
            results.append({
                'index': i,
                'character': char,
                'codepoint': code_point,
                'hex': hex(code_point),
                'binary': bin(code_point),
                'category': characteranalyzer.get_char_category(char)
            })
        return results
    
    @staticmethod
    def get_char_category(char):
        """获取字符类别"""
        code = ord(char)
        if 0 <= code <= 31:
            return "控制字符"
        elif 32 <= code <= 126:
            return "ascii可打印字符"
        elif 127 <= code <= 255:
            return "扩展ascii"
        elif 256 <= code <= 65535:
            return "基本多文种平面(bmp)"
        else:
            return "补充平面"
    
    @staticmethod
    def string_to_codepoints(text, format='decimal'):
        """将字符串转换为码点序列"""
        codepoints = [ord(c) for c in text]
        
        if format == 'decimal':
            return codepoints
        elif format == 'hex':
            return [hex(cp) for cp in codepoints]
        elif format == 'binary':
            return [bin(cp) for cp in codepoints]
        else:
            return codepoints
    
    @staticmethod
    def codepoints_to_string(codepoints):
        """将码点序列转换回字符串"""
        return ''.join(chr(cp) for cp in codepoints)
    
    @staticmethod
    def find_special_characters(text):
        """查找文本中的特殊字符"""
        special_chars = []
        for char in text:
            cp = ord(char)
            if cp < 32 or cp > 126:  # 非标准ascii字符
                special_chars.append({
                    'char': char,
                    'codepoint': cp,
                    'representation': repr(char)
                })
        return special_chars

# 使用示例
analyzer = characteranalyzer()

# 字符串分析
print("=== 字符串编码分析 ===")
test_text = "hello 世界! ☆"
analysis = analyzer.analyze_string(test_text)

for item in analysis:
    print(f"位置 {item['index']}: '{item['character']}' -> "
          f"码点 {item['codepoint']}, 十六进制 {item['hex']}, "
          f"类别: {item['category']}")

# 码点转换
codepoints_decimal = analyzer.string_to_codepoints("abc", format='decimal')
codepoints_hex = analyzer.string_to_codepoints("abc", format='hex')
print(f"字符串码点(十进制): {codepoints_decimal}")
print(f"字符串码点(十六进制): {codepoints_hex}")

# 反向转换
original = analyzer.codepoints_to_string([72, 101, 108, 108, 111])
print(f"码点转字符串: {original}")

# 查找特殊字符
text_with_special = "hello\tworld\n中国☆"
special = analyzer.find_special_characters(text_with_special)
print(f"\n特殊字符查找:")
for item in special:
    print(f"  字符: {item['representation']}, 码点: {item['codepoint']}")

四、组合应用:编码和权限系统

4.1 字符编码转换器

class encodingconverter:
    """编码转换器"""
    
    @staticmethod
    def text_to_unicode_escape(text):
        """将文本转换为unicode转义序列"""
        result = []
        for char in text:
            cp = ord(char)
            if 32 <= cp <= 126:  # 可打印ascii字符
                result.append(char)
            else:
                # 格式: \uxxxx 或 \uxxxxxxxx
                if cp <= 0xffff:
                    result.append(f"\\u{cp:04x}")
                else:
                    result.append(f"\\u{cp:08x}")
        return ''.join(result)
    
    @staticmethod
    def unicode_escape_to_text(escape_str):
        """将unicode转义序列转换为文本"""
        import re
        
        def replace_match(match):
            hex_str = match.group(1)
            return chr(int(hex_str, 16))
        
        # 处理\uxxxx和\uxxxxxxxx格式
        pattern = r'\\[uu]([0-9a-fa-f]{4,8})'
        return re.sub(pattern, replace_match, escape_str)
    
    @staticmethod
    def text_to_octal_escape(text, max_line_length=80):
        """将文本转换为八进制转义序列(类似c字符串)"""
        result = []
        line_length = 0
        
        for char in text:
            cp = ord(char)
            escape_seq = f"\\{cp:03o}"  # 八进制转义
            result.append(escape_seq)
            line_length += len(escape_seq)
            
            if line_length >= max_line_length:
                result.append("\n")
                line_length = 0
        
        return ''.join(result)

# 使用示例
converter = encodingconverter()

# unicode转义
text = "hello 世界! ☆"
escaped = converter.text_to_unicode_escape(text)
print(f"原始文本: {text}")
print(f"unicode转义: {escaped}")

# 反向转换
restored = converter.unicode_escape_to_text(escaped)
print(f"恢复文本: {restored}")

# 八进制转义
octal_escape = converter.text_to_octal_escape("abc\ntest")
print(f"八进制转义: {octal_escape}")

4.2 权限管理系统

class permissionsystem:
    """基于八进制的权限管理系统"""
    
    def __init__(self):
        self.permissions = {}
    
    def add_user(self, username, base_permission=0o644):
        """添加用户并设置基础权限"""
        if not 0 <= base_permission <= 0o777:
            raise valueerror("权限值必须在0-777范围内")
        
        self.permissions[username] = {
            'permission': base_permission,
            'roles': set()
        }
        return self.permissions[username]
    
    def set_permission(self, username, permission):
        """设置用户权限"""
        if username not in self.permissions:
            raise keyerror(f"用户不存在: {username}")
        
        if not 0 <= permission <= 0o777:
            raise valueerror("权限值必须在0-777范围内")
        
        self.permissions[username]['permission'] = permission
        return permission
    
    def check_permission(self, username, required_permission):
        """检查用户是否具有所需权限"""
        if username not in self.permissions:
            return false
        
        user_perm = self.permissions[username]['permission']
        
        # 将八进制权限分解为三组(用户、组、其他)
        def split_permission(perm):
            perm_str = oct(perm)[2:].zfill(3)
            return [int(d) for d in perm_str]
        
        user_parts = split_permission(user_perm)
        required_parts = split_permission(required_permission)
        
        # 检查用户权限是否满足要求
        for u_perm, r_perm in zip(user_parts, required_parts):
            # 检查每个位:读(4)、写(2)、执行(1)
            if (u_perm & r_perm) != r_perm:
                return false
        
        return true
    
    def add_role(self, username, role):
        """为用户添加角色"""
        if username not in self.permissions:
            raise keyerror(f"用户不存在: {username}")
        
        self.permissions[username]['roles'].add(role)
        return true
    
    def has_role(self, username, role):
        """检查用户是否具有指定角色"""
        if username in self.permissions:
            return role in self.permissions[username]['roles']
        return false
    
    def display_permissions(self):
        """显示所有用户权限"""
        print("用户权限列表:")
        print("-" * 40)
        print(f"{'用户名':<15} {'八进制':<8} {'字符串':<12} {'角色'}")
        print("-" * 40)
        
        for username, info in self.permissions.items():
            perm = info['permission']
            perm_str = self._permission_to_string(perm)
            roles = ', '.join(info['roles']) if info['roles'] else '无'
            print(f"{username:<15} {oct(perm):<8} {perm_str:<12} {roles}")

    def _permission_to_string(self, permission):
        """将八进制权限转换为字符串表示"""
        converter = permissionconverter()
        return converter.octal_to_chmod(permission)

# 使用示例
print("=== 权限管理系统示例 ===")
system = permissionsystem()

# 添加用户
system.add_user("admin", 0o755)      # rwxr-xr-x
system.add_user("editor", 0o644)     # rw-r--r--
system.add_user("viewer", 0o444)     # r--r--r--
system.add_user("tester", 0o777)     # rwxrwxrwx

# 添加角色
system.add_role("admin", "administrator")
system.add_role("admin", "superuser")
system.add_role("editor", "content_manager")
system.add_role("viewer", "guest")

# 显示权限
system.display_permissions()

# 权限检查
print("\n权限检查:")
test_cases = [
    ("admin", 0o755),    # 应该通过
    ("admin", 0o777),    # 应该失败(admin没有写其他人的权限)
    ("editor", 0o644),   # 应该通过
    ("viewer", 0o400),   # 应该通过(有读权限)
    ("viewer", 0o200),   # 应该失败(没有写权限)
]

for username, required_perm in test_cases:
    has_perm = system.check_permission(username, required_perm)
    perm_str = system._permission_to_string(required_perm)
    print(f"用户 '{username}' 有权限 {oct(required_perm)} ({perm_str}): {has_perm}")

# 角色检查
print("\n角色检查:")
print(f"admin 是 administrator: {system.has_role('admin', 'administrator')}")
print(f"editor 是 administrator: {system.has_role('editor', 'administrator')}")

五、高级技巧与最佳实践

5.1 字符编码工具

class advancedcharactertools:
    """高级字符编码工具"""
    
    @staticmethod
    def create_character_table(start=32, end=126, columns=8):
        """创建字符编码表"""
        print(f"字符编码表 ({start} 到 {end}):")
        print("=" * 60)
        print(f"{'十进制':<8} {'十六进制':<8} {'八进制':<8} {'字符':<8} {'名称':<20}")
        print("-" * 60)
        
        for code in range(start, end + 1):
            if code % columns == 0 and code > start:
                print()  # 每columns个字符换行
            
            char = chr(code)
            print(f"{code:<8} {hex(code):<8} {oct(code):<8} "
                  f"'{char if code != 127 else 'del'!s:<8}' "
                  f"{advancedcharactertools.get_char_name(code):<20}")
    
    @staticmethod
    def get_char_name(code_point):
        """获取字符名称(简化版)"""
        names = {
            0: "null",
            7: "bel",   # 响铃
            8: "bs",    # 退格
            9: "tab",   # 制表符
            10: "lf",   # 换行
            13: "cr",   # 回车
            27: "esc",  # 退出
            32: "space",# 空格
            127: "del", # 删除
        }
        return names.get(code_point, "")
    
    @staticmethod
    def analyze_encoding_compatibility(text):
        """分析文本的编码兼容性"""
        results = {
            'ascii_compatible': true,
            'latin1_compatible': true,
            'utf8_size': 0,
            'problematic_chars': []
        }
        
        for char in text:
            cp = ord(char)
            
            # ascii兼容性(0-127)
            if cp > 127:
                results['ascii_compatible'] = false
            
            # latin-1兼容性(0-255)
            if cp > 255:
                results['latin1_compatible'] = false
            
            # utf-8字节大小估计
            if cp <= 0x7f:
                results['utf8_size'] += 1
            elif cp <= 0x7ff:
                results['utf8_size'] += 2
            elif cp <= 0xffff:
                results['utf8_size'] += 3
            else:
                results['utf8_size'] += 4
            
            # 记录控制字符(除常见外)
            if cp < 32 and cp not in [9, 10, 13]:  # tab, lf, cr
                results['problematic_chars'].append({
                    'char': repr(char),
                    'codepoint': cp,
                    'name': advancedcharactertools.get_char_name(cp)
                })
        
        return results

# 使用示例
tools = advancedcharactertools()

# 创建字符表
tools.create_character_table(65, 90, 5)  # 显示a-z

# 编码兼容性分析
test_texts = [
    "hello world",           # ascii
    "café",                  # latin-1
    "hello 世界",            # 包含中文
    "text with\ttab\nand newline",  # 控制字符
]

for text in test_texts:
    print(f"\n分析文本: {repr(text)}")
    analysis = tools.analyze_encoding_compatibility(text)
    for key, value in analysis.items():
        if key != 'problematic_chars':
            print(f"  {key}: {value}")
    
    if analysis['problematic_chars']:
        print(f"  有问题的字符: {analysis['problematic_chars']}")

5.2 进制转换和优化

class numbersystemconverter:
    """进制系统转换器"""
    
    @staticmethod
    def convert_between_bases(number, from_base, to_base):
        """在任意进制间转换(2-36)"""
        # 先转换为十进制
        if isinstance(number, str):
            decimal_val = int(number, from_base)
        else:
            decimal_val = int(str(number), from_base)
        
        # 从十进制转换到目标进制
        digits = "0123456789abcdefghijklmnopqrstuvwxyz"
        
        if decimal_val == 0:
            return "0"
        
        result = []
        is_negative = decimal_val < 0
        decimal_val = abs(decimal_val)
        
        while decimal_val > 0:
            remainder = decimal_val % to_base
            result.append(digits[remainder])
            decimal_val //= to_base
        
        if is_negative:
            result.append('-')
        
        return ''.join(reversed(result))
    
    @staticmethod
    def format_number_bases(number, bases=(2, 8, 10, 16)):
        """以多种进制格式化数字"""
        results = {}
        
        for base in bases:
            if base == 2:
                results['binary'] = bin(number)
            elif base == 8:
                results['octal'] = oct(number)
            elif base == 10:
                results['decimal'] = str(number)
            elif base == 16:
                results['hexadecimal'] = hex(number)
            else:
                results[f'base_{base}'] = numbersystemconverter.convert_between_bases(
                    number, 10, base
                )
        
        return results
    
    @staticmethod
    def create_conversion_table(numbers, max_num=20):
        """创建进制转换表"""
        print(f"{'十进制':<8} {'二进制':<10} {'八进制':<8} {'十六进制':<8} {'字符'}")
        print("-" * 45)
        
        for num in numbers:
            if 0 <= num <= max_num:
                char_repr = repr(chr(num)) if 32 <= num <= 126 else '控制字符'
                print(f"{num:<8} {bin(num):<10} {oct(num):<8} {hex(num):<8} {char_repr}")

# 使用示例
converter = numbersystemconverter()

# 进制间转换
print("进制间转换示例:")
print(f"二进制 '1010' -> 八进制: {converter.convert_between_bases('1010', 2, 8)}")
print(f"十六进制 'ff' -> 十进制: {converter.convert_between_bases('ff', 16, 10)}")
print(f"八进制 '77' -> 二进制: {converter.convert_between_bases('77', 8, 2)}")

# 多进制格式化
num = 255
formats = converter.format_number_bases(num, [2, 8, 10, 16, 5])
print(f"\n数字 {num} 的多种进制表示:")
for base_name, value in formats.items():
    print(f"  {base_name}: {value}")

# 创建转换表
print("\nascii字符编码表(部分):")
converter.create_conversion_table(range(65, 75))  # a-j

六、总结与实用建议

通过本文的详细解析,我们深入了解了python中三个重要的内置功能:

  1. object - 所有类的终极基类
  2. oct(integer) - 八进制转换的翻译器
  3. ord(character) - 字符编码的解码器

关键知识点总结:

  • object是所有python类的基类,实例没有__dict__属性
  • oct()将整数转换为带"0o"前缀的八进制字符串
  • ord()返回字符的unicode码位,支持字符串和字节对象

实用场景推荐:

  • object:基类设计、内存优化、不可变对象
  • oct():文件权限管理、进制转换、低级编程
  • ord():字符编码分析、文本处理、国际化支持

最佳实践建议:

  1. 合理使用object:在需要内存优化时使用__slots__,避免不必要的属性
  2. 理解进制转换:掌握二进制、八进制、十进制、十六进制的相互转换
  3. 处理字符编码:始终明确文本的编码方式,使用ord()chr()进行编码转换
  4. 异常处理:对用户输入进行验证,特别是进制转换和编码处理时

安全使用注意事项:

  • 使用oct()转换用户输入时验证数值范围
  • 使用ord()处理多字节字符时注意编码问题
  • 在基类设计中合理使用属性限制

性能优化技巧:

  • 使用__slots__减少对象内存占用
  • 对频繁的字符编码操作进行缓存
  • 使用生成器处理大文本的字符分析

进阶学习方向:

  • 深入学习python的unicode支持和编码问题
  • 研究__getattribute__()__getattr__()等特殊方法
  • 了解python的内存管理和垃圾回收机制
  • 探索struct模块处理二进制数据

这三个功能虽然基础,但它们是python编程的重要基石。从面向对象设计到底层编码处理,从内存优化到权限管理,它们为各种编程场景提供了强大的支持。熟练掌握这些功能将帮助你编写出更加健壮、高效的python代码。

以上就是python内置函数object、oct()、ord()的实用指南的详细内容,更多关于python内置函数object、oct()、ord()的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com