首页 > 编程语言 >面向对象编程-实例属性和类属性

面向对象编程-实例属性和类属性

时间:2023-06-15 16:14:47浏览次数:48  
标签:count __ name 实例 Student 面向对象编程 属性

在实例中绑定属性,和直接在类种绑定属性是不一样的,实例中绑定的只能在实例中用
如果Student类本身需要绑定一个属性,所有实例都可以访问,那么可以这么定义

class Student(object):
name = 'Student'

点击查看代码
class Student(object):
    score = 100#定义类属性
    def __init__(self, name):
        self.name = name
shili = Student('tang')
print(shili.name)
shili.score = 199#实例属性比类属性优先级高
print(shili.score)
del shili.score#删除实例的score属性,类的name属性就出来了
print(shili.score)

运行结果

tang
199
100

所以,实例属性和类属性不要用相同的名字,否则会被实例属性替代掉。

练习
给Student类增加一个类属性,每创建一个实例,该属性自动增加

点击查看代码
class Student(object):

    count = 0

    def __init__(self, name):

        self.name = name

        Student.count += 1

在实例化对象的时候,应该是会自动调用一次这个方法的,区分类属性和实例属性,这里如果改成self.count,那就错了
放在__init__里面才会在实例化对象的时候执行+1的操作。Student.count代表count是类属性,只要这个类被实例化一次就会+1,所以不会被重置。如果是self.count就代表count是对象属性,那么由于每次实例化的对象都是不同的对象,所以每次都会被重置为0。

标签:count,__,name,实例,Student,面向对象编程,属性
From: https://www.cnblogs.com/luwanzi/p/17483153.html

相关文章

  • 面向对象编程-获取对象信息
    获取对象类型使用type()type(123)<class'int'>type('str')<class'str'>type(None)<type(None)'NoneType'>type(abs)<class'builtin_function_or_method'>type(a)<class'......
  • background属性
     <!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="author"content="http://www.softwhy.com/"/><title></title><styletype="text/css">/*通......
  • 初学者的React全家桶完整实例
    概述该项目还有些功能在开发过程中,如果您有什么需求,欢迎您与我联系。我希望能够通过这个项目对React初学者,或者Babel/webpack初学者都有一定的帮助。我在此再强调一下,在我写的这些文章末尾都附加了很多参考文献,而这些参考文献的作用对我的帮助真的很大,在此表示感谢!!!!!......
  • 详解spring事务属性
    Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务......
  • 面向对象编程-类和实例
    定义类通过class关键字,类名通常是大写开头的单词,(object)表示这个类从哪个类继承下来,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类点击查看代码classStudent(object):pass创建好类,就可以根据Student类创建出Student的实例,创建实例是通过类名+()实现......
  • 【JS错题总结】对象属性相关
    下面代码的输出结果:varobj={brand:'apple',price:5999}Object.defineProperty(obj,'id',{value:1})Object.defineProperty(obj,'price',{configurable:false})console.log(Object.keys(obj).length);//2//apple5999f......
  • CSS(语义化标签、多媒体标签、新表单元素、属性选择器、结构伪类选择器、伪元素选择器
    一、HTML5新特性概述HTML5的新增特性主要是针对于以前的不足,增加了一些新的标签、新的表单和新的表单属性等。这些新特性都有兼容性问题,基本是IE9+以上版本的浏览器才支持,如果不考虑兼容性问题,可以大量使用这些新特性。1语义化标签(★★)以前布局,我们基本用div来做。di......
  • wpf特殊属性:正确理解ContentPresenter(转载)
    原文地址:https://www.cnblogs.com/shawnzxx/p/3346975.html下图显示继承关系:ContentControl:Control(在Control類並沒有Content屬性,所以在這之上再寫了一個ContentControl,使控件有Content屬性可以顯示內容)ContentPresenter:FrameworkElement(ContentPresenter一般用在C......
  • 【Netty】一个RPC实例
    Netty实现简易RPC调用总体流程:客户端发起rpc调用请求,封装好调用的接口名,函数名,返回类型,函数参数类型,函数参数值等属性,将消息发送给服务器。服务器的handler解析rpc请求,调用对应方法,并将方法结果写回客户端。客户端在主线程发送消息后,准备一个空Promise对象,用来接收结果。在......
  • rocketMQ消息队列简介及其实例
    一、RocketMQ核心的四大组件:Producer:就是消息生产者,可以集群部署。它会先和NameServer集群中的随机一台建立长连接,得知当前要发送的Topic存在哪台BrokerMaster上,然后再与其建立长连接,支持多种负载平衡模式发送消息。Consumer:消息消费者,也可以集群部署。它也会先和NameSe......