当前位置: 首页 > wzjs >正文

怎么不花钱做公司网站微网站建设云帆网络

怎么不花钱做公司网站,微网站建设云帆网络,wap浏览器免费下载,有哪些好的做网站类变量与实例变量的区别总结 代码示例 class Example:class_var "我是类变量,所有实例共享我" # 类变量def __init__(self, name):self.name name # 实例变量,每个实例独有def modify_class_var(self, new_value):Example.class_var ne…

类变量与实例变量的区别总结

代码示例

class Example:class_var = "我是类变量,所有实例共享我"  # 类变量def __init__(self, name):self.name = name  # 实例变量,每个实例独有def modify_class_var(self, new_value):Example.class_var = new_value  # 修改类变量,影响所有实例def modify_instance_var(self, new_name):self.name = new_name  # 只修改当前实例的变量

定义位置

  • 类变量:直接在类内部定义,位于所有方法之外
  • 实例变量:在实例方法(通常是__init__)内部定义,使用self.变量名

内存存储

  • 类变量:存储在类的命名空间中,只有一份,被所有实例共享
  • 实例变量:存储在各个实例的命名空间中,每个实例有独立的副本

访问方式

  • 类变量:可通过类名.变量名实例.变量名访问
  • 实例变量:只能通过实例.变量名访问

生命周期

  • 类变量:在类定义执行时创建,直到程序结束或类被删除
  • 实例变量:在实例创建时创建,直到实例被垃圾回收

数据共享

  • 类变量:所有实例共享同一数据,一处修改,处处生效
  • 实例变量:每个实例独立拥有,修改只影响当前实例

内存效率

  • 类变量:节省内存,不随实例数量增加而增加内存占用
  • 实例变量:随实例数量增加而增加内存占用

常见应用场景

  • 类变量适用于

    • 常量数据(如CSS选择器、默认值)
    • 所有实例共享的配置
    • 计数器和统计信息
    • 缓存数据
    • 共享资源(数据库连接等)
  • 实例变量适用于

    • 实例特有状态
    • 可变的个体数据
    • 实例间的关系
    • 实例特定的配置
    • 运行时的状态跟踪

常见陷阱

  • 通过实例修改可变类变量(如列表、字典)会影响所有实例
  • 同名的实例变量会覆盖类变量的访问(但不会修改类变量本身)
  • 类方法中不能直接访问实例变量(因为没有self引用)

记住:类变量用于共享,实例变量用于独立。理解这一核心区别可以帮助您设计更好的类结构。

类变量与实例变量:深入理解

1. 内存模型与存储位置

想象类和实例的内存结构:

  • 类变量存储在类对象中(只有一份)
  • 实例变量存储在每个实例对象中(有多份)
class Student:school = "清华大学"  # 类变量,所有学生共享同一所学校def __init__(self, name, age):self.name = name  # 实例变量,每个学生有自己的名字self.age = age    # 实例变量,每个学生有自己的年龄

如果创建三个学生实例:

student1 = Student("张三", 20)
student2 = Student("李四", 21)
student3 = Student("王五", 19)

内存结构类似于:

Student类对象:- school = "清华大学"student1实例对象:- name = "张三"- age = 20student2实例对象:- name = "李四"- age = 21student3实例对象:- name = "王五"- age = 19

2. 修改时的行为差异

当修改类变量时,所有实例都会看到变化(除非实例有同名的实例变量覆盖):

# 修改学校名称
Student.school = "北京大学"# 所有学生的学校都变成了"北京大学"
print(student1.school)  # 输出: "北京大学"
print(student2.school)  # 输出: "北京大学"
print(student3.school)  # 输出: "北京大学"

但修改实例变量只影响该实例:

# 只修改student1的年龄,从20改为22
student1.age = 22print(student1.age)  # 输出: 22
print(student2.age)  # 输出: 21 (没变)
print(student3.age)  # 输出: 19 (没变)

3. 陷阱:通过实例修改可变类变量

如果类变量是可变对象(如列表、字典),通过实例修改它会影响所有实例:

class Course:students = []  # 类变量,是个列表def __init__(self, name):self.name = namedef add_student(self, student):self.students.append(student)  # 看起来是在操作实例,但实际修改的是类变量

使用案例:

math = Course("数学")
physics = Course("物理")math.add_student("张三")  
print(physics.students)  # 输出: ["张三"] - 物理课也有了"张三"这个学生!

4. 具体应用场景示例

适合使用类变量的场景:
  1. 配置信息:例如您项目中的CSS选择器
class CNEducationPage(EducationPage):# 所有页面实例用相同的选择器,很适合做类变量COURSE_LIST = ".course-container, .course-list, .courses"
  1. 数据库连接:所有实例共享同一个连接池
class DatabaseManager:connection_pool = []  # 连接池作为类变量被所有实例共享def __init__(self, query):self.query = query  # 每个实例的查询不同,用实例变量
  1. 计数器:记录创建了多少个实例
class User:count = 0  # 类变量用作计数器def __init__(self, username):User.count += 1  # 每创建一个实例就增加计数self.id = User.count  # 给每个用户分配一个唯一IDself.username = username
适合使用实例变量的场景:
  1. 实例状态:例如浏览器页面实例
class BasePage:def __init__(self, page):self.page = page  # 每个页面实例操作不同的页面对象self.loaded = False  # 跟踪这个特定页面是否加载完成
  1. 用户输入数据
class FormProcessor:# 类变量:表单共同的字段fields = ["name", "email", "message"]def __init__(self, form_data):# 实例变量:每个表单处理器有不同的输入数据self.data = form_dataself.errors = []  # 存储处理过程中的错误
  1. 对象间关系
class Teacher:def __init__(self, name):self.name = nameself.students = []  # 每个老师有自己的学生列表,用实例变量def add_student(self, student):self.students.append(student)  # 只影响这个老师的学生列表

总结:类变量用于共享数据,实例变量用于独立状态。理解这两者的区别对于设计健壮的类结构至关重要。

http://www.dtcms.com/wzjs/827480.html

相关文章:

  • 鞍山建设网站开发手机app需要学什么知识
  • 不懂英文怎么做英文的seo网站伏羲方舟网站建设
  • 申报课题所需的网站怎么做西安网站开发公司有哪家好
  • 90设计网站可以商用吗wordpress播放没声音
  • 营口规划建设局网站本溪做网站
  • 网站后台是怎么做出来的贵州网站建设价格
  • 网站建设的方式有哪些ico网站进行推广
  • 如何查询一个网站的空间大小成立
  • 地方房地产网站网站改自适应 做自适应
  • 一般网站建设多少钱便宜的网站好吗抚顺网站建设7113
  • 永康网站建设优化建站自己可以做类似拓者的网站吗
  • 做网站标题居中代码广州公司注册官网
  • 做娱乐网站被坑青海媒体网站建设公司
  • 自做网站的步骤wordpress文章采集器
  • 企业网站的分类有哪三种logo在线制作免费网站
  • 六盘水网站建设wordpress 文章跳转
  • 台州网站建设模板磁力搜索器
  • 网站注册信息查询免费wordpress申请
  • 新的网站后台不显示网站栏目长沙市建设厅网站
  • 《网站建设 补充合同厂家招总代理
  • 门户网站是以什么为主如何创建目录wordpress
  • 做网站得做多少网页网页设计作业古诗
  • 福建省建设注册执业资格管理中心网站wordpress下滑显示导航
  • 建设部网站查询注册岩土工程师网站服务器失去响应什么意思
  • 龙岩网站建设行情在工商局网站怎么做清算
  • 大型小说网站开发语言个人 邮箱 含网站 域名
  • 三亚网站开发南山网站公司定
  • 天津网络优化网站建设织梦建网站
  • 网站seo是干什么的建设文明网站包括哪些内容
  • 金融网站建设网私人私密浏览器免费下载