Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Python中类和对象入门教程 Python中类和对象基本用法_创想鸟

Python中类和对象入门教程 Python中类和对象基本用法

Python中的类和对象通过类定义对象模板,对象是类的实例,实现数据与行为的封装,支持继承、组合与特殊方法,提升代码复用性、可维护性与现实建模能力。

python中类和对象入门教程 python中类和对象基本用法

Python中的类和对象,其实就是我们构建复杂程序时,手里最趁手的两把“锤子”和“凿子”。它们让我们能把那些抽象的、现实世界中的概念,比如“一辆车”、“一个用户”或者“一份文档”,转化成计算机能够理解和操作的代码实体。简单来说,类是蓝图,定义了这类事物的共同特征和行为;而对象,则是根据这张蓝图制造出来的具体实例,每个实例都有自己的状态。

在Python里,我们用类和对象来组织代码,让它更接近我们思考问题的方式。想想看,如果我们要管理一堆关于“人”的信息,每个“人”都有姓名、年龄、职业这些属性,还能做“打招呼”、“工作”这些动作。用类,我们就能定义一个

Person

的蓝图,然后根据这个蓝图创建无数个具体的“人”对象,每个对象都是独立的个体,但都遵循

Person

类的定义。这不仅让代码结构清晰,也大大提升了代码的复用性和可维护性。

解决方案

要真正理解并运用Python中的类和对象,我们得从它们的定义和实例化开始。

一个类,用

class

关键字来定义。它就像一个模板,里面包含了属性(数据)和方法(行为)。比如,我们想创建一个

Dog

类:

立即学习“Python免费学习笔记(深入)”;

class Dog:    # 这是一个类属性,所有Dog对象共享    species = "Canis familiaris"    def __init__(self, name, age):        # __init__ 是构造方法,在创建对象时自动调用        # self 指代当前对象实例        self.name = name  # 实例属性        self.age = age    # 实例属性    def bark(self):        # 这是一个方法,定义了Dog对象的行为        return f"{self.name} says Woof!"    def get_age(self, human_years_factor=7):        # 另一个方法,可以带参数        return self.age * human_years_factor

上面这段代码,

Dog

就是一个类。

species

是类属性,所有狗都是犬科动物。

__init__

方法很关键,它在每次你创建

Dog

对象的时候都会被调用,用来初始化这个对象的特定状态(比如它的名字和年龄)。

self

这个参数是约定俗成的,它代表了正在被操作的那个对象实例本身。

接着,我们就可以根据这个

Dog

蓝图来创建具体的“狗”了,这些具体的“狗”就是对象(或称实例):

# 创建Dog对象my_dog = Dog("Buddy", 3)another_dog = Dog("Lucy", 5)# 访问对象的属性print(f"{my_dog.name} is {my_dog.age} years old.") # 输出:Buddy is 3 years old.print(f"{another_dog.name} is {another_dog.age} years old.") # 输出:Lucy is 5 years old.# 调用对象的方法print(my_dog.bark()) # 输出:Buddy says Woof!print(f"{another_dog.name} is {another_dog.get_age()} human years old.") # 输出:Lucy is 35 human years old.# 访问类属性print(Dog.species) # 输出:Canis familiarisprint(my_dog.species) # 也可以通过实例访问类属性

你会发现,

my_dog

another_dog

虽然都是

Dog

类的实例,但它们各自拥有独立的

name

age

属性。这就是对象的独立性。而

bark()

get_age()

方法,则定义了它们能做什么。这就是类和对象最核心的用法。

Python中类和对象究竟解决了什么问题?为什么我们需要它们?

说实话,刚接触类和对象时,很多人会觉得有点绕,甚至会想:“我用几个函数和字典不也能实现类似的功能吗?”确实,对于一些简单的场景,也许可以。但当项目规模开始扩大,或者你需要处理的数据结构变得复杂时,类和对象的优势就显现出来了,它们解决的核心问题归结起来就是:代码的组织、复用和对现实世界的建模

想象一下,如果你要开发一个游戏,里面有各种各样的角色:玩家、敌人、NPC。每个角色都有生命值、攻击力、位置等属性,还能执行移动、攻击、施法等动作。如果不用类,你可能会为每个角色类型写一堆独立的函数,用字典存储它们的数据。很快,代码就会变得冗长、难以管理,而且一旦需要修改某个角色的行为,你可能要在很多地方进行重复的改动。

而有了类和对象,情况就完全不同了。我们可以创建一个

Character

基类,定义所有角色共有的属性和行为。然后,

Player

Enemy

NPC

可以继承这个

Character

类,在此基础上添加它们特有的属性和方法。这样一来:

结构清晰,模块化程度高:所有与“角色”相关的数据和操作都封装在

Character

类及其子类中,一目了然。代码复用性强(DRY原则):共同的行为(比如

move()

)只需在基类中实现一次,所有子类都能直接使用,避免了重复代码。易于扩展和维护:如果需要增加一种新的角色类型,只需创建一个新的子类,继承现有功能,再添加独特部分即可,不会影响到其他已有的代码。如果需要修改所有角色的某个基础行为,只需修改基类中的对应方法。更好地模拟现实世界:类和对象的设计哲学,就是将现实世界中的“实体”及其“行为”映射到代码中,这使得我们的程序逻辑更自然,更容易理解和推理。一个

Car

对象有

color

brand

属性,有

start()

accelerate()

方法,这和我们对真实汽车的认知是吻合的。封装性:类将数据(属性)和操作数据的方法(行为)捆绑在一起,形成一个独立的单元。外部代码通常只能通过定义好的接口(方法)来与对象交互,而无法直接修改其内部状态,这有助于保护数据不被非法访问或修改,提高了程序的健壮性。

所以,类和对象并非只是语法糖,它们是构建复杂、可维护、可扩展软件系统的基石,是面向对象编程(OOP)的核心思想体现。

在Python中,如何正确地定义和使用类的属性与方法?有哪些常见的陷阱?

正确地定义和使用类的属性与方法,是写出健壮Python代码的关键。这里面有些细微之处,初学者常常会混淆,甚至踩坑。

属性的定义与使用:

我们主要关注两种属性:

实例属性(Instance Attributes):这些属性是每个对象实例独有的。它们通常在

__init__

方法中通过

self.attribute_name = value

来定义和初始化。比如前面

Dog

类中的

name

age

。每个

Dog

对象都有自己的名字和年龄。

class Car:    def __init__(self, brand, color):        self.brand = brand  # 实例属性        self.color = color  # 实例属性my_car = Car("Tesla", "Red")another_car = Car("BMW", "Black")print(my_car.color) # Redprint(another_car.color) # Black

类属性(Class Attributes):这些属性是属于类本身的,所有该类的实例共享同一个值。它们直接在类定义体中,方法之外定义。比如

Dog.species

class Car:    wheels = 4 # 类属性,所有Car对象都有4个轮子    def __init__(self, brand, color):        self.brand = brand        self.color = colorprint(Car.wheels) # 4my_car = Car("Tesla", "Red")print(my_car.wheels) # 4 (通过实例访问类属性)# 陷阱:如果你通过实例去修改类属性,实际上会创建或修改一个同名的实例属性!my_car.wheels = 6 # 这并没有改变Car.wheels,而是给my_car对象添加了一个名为wheels的实例属性print(my_car.wheels) # 6print(Car.wheels) # 4 (类属性没变)another_car = Car("BMW", "Black")print(another_car.wheels) # 4 (其他实例的类属性也没变)# 要修改类属性,应该通过类名来修改Car.wheels = 5print(Car.wheels) # 5print(another_car.wheels) # 5 (现在所有新旧实例(除非它们有自己的同名实例属性)都会看到这个新值)

这个“通过实例修改类属性”的陷阱非常常见,一定要注意。如果你的意图是让所有实例共享一个可变对象(比如一个列表或字典),并且希望通过任何实例的修改都能反映到其他实例上,那么你必须通过类名来修改,或者确保你的逻辑是正确的。

方法的定义与使用:

Python中的方法主要有三种类型:

实例方法(Instance Methods):最常见,第一个参数必须是

self

,它允许方法访问和修改对象实例的属性。

class User:    def __init__(self, name):        self.name = name    def greet(self): # 实例方法        return f"Hello, I'm {self.name}."user1 = User("Alice")print(user1.greet())

类方法(Class Methods):使用

@classmethod

装饰器,第一个参数通常命名为

cls

(代表类本身)。类方法可以访问和修改类属性,也可以用于创建类的不同实例(工厂方法)。

class Product:    discount_rate = 0.10 # 类属性    def __init__(self, name, price):        self.name = name        self.price = price    @classmethod    def set_discount(cls, new_rate): # 类方法        cls.discount_rate = new_rate        print(f"Discount rate updated to {cls.discount_rate * 100}%")    def get_final_price(self):        return self.price * (1 - self.discount_rate)p1 = Product("Laptop", 1000)print(f"Original price of {p1.name}: {p1.get_final_price()}") # 900.0Product.set_discount(0.15) # 通过类调用类方法print(f"New price of {p1.name}: {p1.get_final_price()}") # 850.0# 也可以通过实例调用,但通常不推荐,因为它操作的是类p1.set_discount(0.20)print(f"New price again: {p1.get_final_price()}") # 800.0

静态方法(Static Methods):使用

@staticmethod

装饰器,不接受

self

cls

作为第一个参数。它们与类或实例的状态无关,更像是放在类命名空间下的普通函数,只是为了逻辑上的归属。

class MathUtil:    @staticmethod    def add(a, b): # 静态方法        return a + b    @staticmethod    def multiply(a, b): # 静态方法        return a * bprint(MathUtil.add(5, 3)) # 8print(MathUtil.multiply(5, 3)) # 15# 静态方法可以通过类名或实例名调用,但它们行为一致,因为不依赖实例或类状态

常见的陷阱:

忘记

self

参数:在实例方法中,如果忘了写

self

,Python会报错。

__init__

之外定义实例属性:虽然Python允许你在任何方法中为

self

添加新属性,但这通常不是好习惯。所有核心属性都应该在

__init__

中初始化,这样可以确保每个新创建的对象都有一致的初始状态。

误用可变类属性:如果一个类属性是一个可变对象(如列表、字典),并通过实例修改它,那么所有实例都会受到影响。这可能是你想要的,也可能不是。如果不是,那么应该在

__init__

中为每个实例创建独立的副本。

class Student:    # 陷阱:all_students是一个可变类属性    all_students = []    def __init__(self, name):        self.name = name        Student.all_students.append(self.name) # 每次创建实例都修改了类属性s1 = Student("Alice")s2 = Student("Bob")print(Student.all_students) # ['Alice', 'Bob'] - 这是共享的

如果每个学生实例需要有自己独立的列表,那么

all_students

应该是一个实例属性,或者在

__init__

中处理。

过度设计:有时我们会把简单的功能也硬塞进类里,导致类结构过于复杂,反而降低了可读性。记住,不是所有东西都需要成为一个类。

理解这些细节,能帮助我们更有效地利用Python的面向对象特性,写出清晰、可维护的代码。

理解了基础,那么Python中对象之间的关系和一些高级特性是怎样的?

当我们开始用类和对象构建更复杂的系统时,仅仅知道如何定义它们是不够的,还需要理解对象之间如何交互,以及Python提供的一些更高级的机制。这就像你学会了造砖头,下一步就是学习如何用砖头盖房子,还要知道怎么用不同的材料和工具

1. 对象间的关系:组合(Composition)与继承(Inheritance)

这是面向对象设计中最重要的两个概念,它们描述了类与类、对象与对象之间的关系。

继承(”is-a”关系):一个类可以从另一个类继承属性和方法。子类(派生类)“是”父类(基类)的一种特殊类型。这促进了代码的复用和扩展。

class Animal: # 父类    def __init__(self, name):        self.name = name    def speak(self):        raise NotImplementedError("Subclass must implement abstract method")class Dog(Animal): # 子类,继承Animal    def speak(self):        return f"{self.name} says Woof!"class Cat(Animal): # 子类,继承Animal    def speak(self):        return f"{self.name} says Meow!"my_dog = Dog("Buddy")my_cat = Cat("Whiskers")print(my_dog.speak())print(my_cat.speak())

这里,

Dog

Cat

“是”

Animal

的一种。继承是强耦合关系,子类与父类紧密相连。

组合(”has-a”关系):一个类包含另一个类的对象作为其属性。这意味着一个对象“拥有”或“包含”另一个对象。这是一种更松散的耦合关系,通常比继承更灵活。

class Engine:    def __init__(self, fuel_type):        self.fuel_type = fuel_type    def start(self):        return f"Engine starting with {self.fuel_type}."class Car:    def __init__(self, brand, engine_fuel):        self.brand = brand        self.engine = Engine(engine_fuel) # Car对象“拥有”一个Engine对象    def drive(self):        return f"{self.brand} is driving. {self.engine.start()}"my_car = Car("Toyota", "Petrol")print(my_car.drive())
Car

“拥有”一个

Engine

。组合允许你将复杂对象分解为更小的、可管理的部分,提高了模块化和可维护性。在实际开发中,当不确定使用继承还是组合时,通常倾向于“组合优于继承”的原则,因为它提供了更大的灵活性。

2. 特殊方法(Dunder Methods / Magic Methods)

Python中的类和对象之所以强大且灵活,很大程度上归功于其丰富的特殊方法(名称前后带有双下划线,如

__init__

__str__

)。这些方法允许我们自定义对象的行为,使其能够响应内置操作符、函数或语言特性。

__str__(self)

__repr__(self)

__str__

:返回对象的“非正式”字符串表示,供用户阅读(比如

print()

函数会调用它)。

__repr__

:返回对象的“官方”字符串表示,供开发者阅读,目标是能够通过这个字符串重新创建对象。

class Point:def __init__(self, x, y):    self.x = x    self.y = ydef __str__(self):    return f"Point({self.x}, {self.y})"def __repr__(self):    return f"Point(x={self.x}, y={self.y})"

p = Point(1, 2)print(p) # 调用 strprint(repr(p)) # 调用 repr


__len__(self)

:让你的对象可以使用

len()

函数。

__add__(self, other)

:定义

+

运算符的行为。

__getitem__(self, key)

__setitem__(self, key, value)

:让你的对象可以像字典或列表一样通过

[]

进行索引访问。

这些特殊方法让你的自定义对象能无缝地融入Python的生态系统,行为上更像内置类型,极大地提升了代码的表达力和可用性。

3. 封装:私有属性与受保护属性

Python并没有像Java或C++那样严格的“私有”或“保护”访问修饰符。它依赖于一种约定:

单下划线前缀 (

_attribute

):表示该属性或方法是“受保护的”(protected),意味着它不应该被外部直接访问,但子类可以访问。这仅仅是一个约定,从技术上讲,你仍然可以访问它。双下划线前缀 (

__attribute

):这会触发Python的名称修饰(name mangling)机制,将属性名变为

_ClassName__attribute

。这使得外部代码更难直接访问它,但仍然不是绝对私有,只是增加了访问的复杂性。它主要用于避免子类中的同名属性冲突。

class BankAccount:    def __init__(self, balance):        self.__balance = balance # 伪私有属性    def deposit(self, amount):        if amount > 0:            self.__balance += amount            print(f"Deposited {amount}. New balance: {self.__balance}")        else:            print("Deposit amount must be positive.")    def get_balance(self):        return self.__balance# account = BankAccount(100)# account.deposit(50)# print(account.__balance) # 这会报错:AttributeError# print(account._BankAccount__balance) # 但你可以通过这种方式访问它,不推荐# print(account.get_balance())

理解这些机制,能帮助我们设计出更健壮、更易于维护的面向对象程序。它们不是孤立存在的,而是相互配合,共同构建起Python中灵活而强大的对象模型。

以上就是Python中类和对象入门教程 Python中类和对象基本用法的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Python中元组如何操作 Python中元组操作方法
上一篇 2025年12月14日 09:10:52
Python中if语句如何正确使用 Python中if语句使用指南
下一篇 2025年12月14日 09:11:03

相关推荐

  • DeepSeek能不能帮我写代码 简单编程任务如何交给DeepSeek完成

    DeepSeek能不能帮我写代码 简单编程任务如何交给DeepSeek完成DeepSeek能不能帮我写代码 简单编程任务如何交给DeepSeek完成DeepSeek能不能帮我写代码 简单编程任务如何交给DeepSeek完成DeepSeek能不能帮我写代码 简单编程任务如何交给DeepSeek完成

    很多用户好奇,像DeepSeek这样的AI模型能否帮助完成编程任务,特别是那些相对简单的编程需求。答案是肯定的。DeepSeek具备理解自然语言描述并尝试生成相应代码的能力,这使得它成为完成一些简单编程任务的有力工具。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepS…

    2026年9月24日 用户投稿
    100
  • ubuntu如何mount网络驱动器

    在ubuntu中挂载网络驱动器有多种方法,以下是一些常见的方法: 方法一:使用mount命令 确定网络驱动器的地址:例如,如果是Samba共享,地址可能是smb://server/share。如果是NFS共享,地址可能是nfs://server/share。安装必要的软件包:对于Samba共享,安装…

    2026年9月24日
    000
  • Java中双精度浮点数的小数位控制技巧

    Java中双精度浮点数的小数位控制技巧Java中双精度浮点数的小数位控制技巧Java中双精度浮点数的小数位控制技巧Java中双精度浮点数的小数位控制技巧

    本文深入探讨了在Java中有效控制double类型数值小数位数的方法。通过Math.round()函数结合乘除操作,可以实现数值本身的四舍五入并改变其精度;而String.format()则提供了灵活的字符串格式化功能,用于在不修改原始数值的情况下精确控制显示的小数位数。这两种方法分别适用于不同的业…

    2026年9月24日 用户投稿
    000
  • Steam新游周报:经典恐怖游戏新作登场!

    Steam新游周报:经典恐怖游戏新作登场!Steam新游周报:经典恐怖游戏新作登场!Steam新游周报:经典恐怖游戏新作登场!Steam新游周报:经典恐怖游戏新作登场!

    十一国庆前的最后一周,Steam上又有许多令人兴奋的新作发布!本周策略玩家与模拟建设玩家有福了,将有数款新作等着你们,体育爱好者们则能玩到EA一款足球年货游戏,而本周黑马则是一款来自科乐美的经典日式恐怖游戏。让我们进入这周的新游周报吧! 周一(9月22日) 名望(抢先体验) Steam商店页面:名望…

    2026年9月24日 用户投稿
    000
  • mysql中rand的用法 mysql随机函数使用教程

    mysql 的 rand() 函数返回 0 到 1 之间的随机浮点数,用于随机选择和排序数据。1)随机排序:select from your_table order by rand()。2)随机抽取记录:select from your_table order by rand() limit 10。…

    2026年9月24日
    200
  • 高质量免费logo设计网站 国产免费logo生成工具推荐

    国产免费Logo设计网站推荐即时设计、DesignEvo、牛人设计等,这些平台提供海量模板、支持中文输入与AI智能生成,具备全中文界面、本土化元素和矢量导出功能,适合零基础用户快速制作高质量Logo。 高质量免费logo设计网站国产免费logo生成工具推荐这是不少网友都关注的接下来由PHP小编为大家…

    2026年9月24日
    200
  • 荣耀V系列手机微信收款语音怎么设置?快速配置支付播报指南

    答案:设置微信收款语音播报需先在微信“收付款”中开启“收款到账语音提醒”,再确保荣耀V系列手机的媒体音量正常、通知权限开启、关闭勿扰模式、允许微信后台运行,并检查通知通道和网络连接,才能保障语音提醒正常播放。 荣耀V系列手机设置微信收款语音播报,核心在于微信应用内部的“收款到账语音提醒”功能,并确保…

    2026年9月24日
    200
  • 如何通过BIOS调整CPU电压实现节能?

    答案:CPU降压通过BIOS调整Vcore电压,采用Offset模式在保证稳定前提下降低功耗与温度,提升能效;需结合HWiNFO64等工具监控温度、功耗,并用Prime95等压力测试验证稳定性,避免蓝屏或崩溃,合理设置可使CPU在更低温度下维持更高睿频,实现节能且不牺牲性能。 通过BIOS调整CPU…

    2026年9月24日
    700
  • 为什么GPU显存带宽比容量更重要?

    显存带宽比容量更重要,因其直接决定数据传输速度,影响GPU计算单元的利用率。在AI训练和高分辨率渲染中,高带宽可避免“数据饥饿”,确保海量数据高效流转,而HBM技术凭借3D堆叠和宽接口提供远超GDDR的带宽,成为高性能计算的关键。 GPU显存带宽比容量更重要,核心在于现代GPU的工作模式和其处理的数…

    2026年9月24日
    100
  • iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能

    iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能iPhone14微信收款语音播报怎么设置?详细教程助你配置语音功能

    要让iPhone 14微信收款语音播报正常工作,需确保微信内开启“收款到账语音提醒”,同时在系统设置中允许微信通知并开启声音,检查手机未处于静音或勿扰模式,保持微信更新并重启设备以排除缓存问题。 要在iPhone 14上设置微信收款语音播报,最关键的其实是确保微信应用内部的通知设置和手机系统层面的通…

    2026年9月24日 用户投稿
    600
  • VSCode如何实现代码热重载 VSCode实时预览开发的高效配置方案

    使用live server扩展实现静态文件的实时预览,保存后浏览器自动刷新;2. 利用现代前端框架(如react、vue)内置的开发服务器(如vite、webpack dev server)实现hmr热模块替换,修改代码后仅更新变动模块而不刷新页面;3. 结合browsersync等工具实现多设备同…

    2026年9月24日
    000
  • 外媒测试《消逝的光芒:困兽》PC性能:运行表现相当优秀

    外媒测试《消逝的光芒:困兽》PC性能:运行表现相当优秀外媒测试《消逝的光芒:困兽》PC性能:运行表现相当优秀外媒测试《消逝的光芒:困兽》PC性能:运行表现相当优秀外媒测试《消逝的光芒:困兽》PC性能:运行表现相当优秀

    来入手《消逝的光芒:困兽》吧!现享金币优惠叠加专属优惠券折上折,标准版仅需200.9元(共节省47.1元);豪华版233.2元(总计立减54.8元)。 由Techland打造的《消逝的光芒》系列新作《消逝的光芒:困兽》已正式上线。本作背景设定在曾经风景如画、如今却尸横遍野的河狸谷。玩家将在此组建临时…

    2026年9月24日 用户投稿
    000
  • mysql临时表如何使用_PHP中操作mysql临时表的具体步骤

    MySQL临时表仅在当前会话可见,连接关闭后自动删除,适合中间数据处理。使用PHP操作时,先通过mysqli或PDO建立数据库连接,再执行CREATE TEMPORARY TABLE语句创建临时表,随后可像普通表一样进行INSERT、SELECT及JOIN等操作。临时表可与永久表同名且优先被使用,支…

    2026年9月24日
    000
  • UC浏览器怎么查看和清除LocalStorage数据 UC浏览器LocalStorage数据管理方法

    可通过隐私设置清除或开发者工具查看LocalStorage。①在UC浏览器设置中选择“隐私与安全”→“清除浏览数据”,勾选“Cookie及其他网站数据”即可批量删除LocalStorage;②打开uc://inspect启用开发者工具,通过电脑Chrome远程调试查看具体键值对;③root设备后使用…

    2026年9月24日
    200
  • Java语法基础中static关键字可以修饰哪些内容

    static关键字用于定义类成员,包括静态变量(如计数器)、静态方法(如工具方法)、静态代码块(类加载时执行)和静态内部类(不依赖外部类实例),均属于类而非对象,通过类名访问,提升成员至类级别实现共享与提前使用。 static 关键字在 Java 中主要用于定义与类相关而非与对象实例相关的成员。它不…

    2026年9月24日
    100
  • 抖音怎么看注册时间?怎么看百度网盘注册时间

    抖音已然成为国内炙手可热的短视频平台之一。凭借其独特的智能推荐系统,用户能够在短时间内找到自己喜爱的内容。你是否知道,你的抖音注册时间实际上隐含了许多关于你的社交轨迹的信息呢?本文将带领大家一同揭秘抖音注册时间背后的故事。 一、抖音注册时间的意义 1. 用户活跃程度的体现 抖音注册时间能够帮助我们判…

    2026年9月24日
    100
  • mysql中*是什么意思 mysql星号通配符解析

    在 mysql 中,星号()最常用于 select 语句中代表所有列,但应谨慎使用。1)它方便查看所有数据,但可能返回不必要的数据,影响性能。2)使用可能降低代码可维护性,建议明确列出所需列。3)在like操作符中,不是通配符,需用regexp。4)在视图中使用可能导致定义失效。5)可结合limit…

    2026年9月24日
    000
  • 为什么要4k对齐

    早期硬盘的每个扇区以512字节为标准,而新一代硬盘的扇区容量则为4096个字节,即所谓的4k扇区。虽然硬盘标准已经更新,但操作系统仍然使用512字节扇区的标准。为了确保兼容性,硬盘制造商将4k扇区模拟成了512字节扇区。文件系统的块(簇)通常是512字节的倍数,而新系统大多设定为4k的倍数,例如li…

    2026年9月24日
    000
  • 抖音怎么下载视频?抖音怎么提取别人的视频

    抖音作为一个热门的短视频社交平台,凭借其多样化的短视频内容吸引了众多用户。部分用户在浏览抖音视频时,希望能将其保存下来以供后续观看。那么,如何在抖音上下载视频呢?接下来,本文将详细介绍几种下载抖音视频的方法以及相关的注意事项。 一、抖音视频下载方法 使用抖音官方提供的下载功能 抖音自身具备下载功能,…

    2026年9月24日
    400
  • google浏览器怎么把网页保存为PDF_google浏览器网页保存为PDF方法

    使用Chrome将网页保存为PDF,首先按Ctrl+P进入打印界面,选择“另存为PDF”并调整设置后保存;也可通过F12打开开发者工具,截取指定元素或完整页面截图后转为PDF;还可安装“Save as PDF”等扩展程序实现更高质量的导出。 如果您希望将当前浏览的网页完整保存以便离线查看或分享,Go…

    2026年9月24日
    000

发表回复

登录后才能评论
关注微信