首页 > 其他分享 >类为什么要实例化

类为什么要实例化

时间:2024-05-08 22:00:26浏览次数:18  
标签:info 为什么 weight self 实例 hobby zhangsan

类的实例化(见名知意)

​ 引言:我们都知道不管是什么编程语言创建一个“类”都要进行实例化,但是网上解释五花八门,各种高大上的解释让初学者看了头疼,这次我就通过Python语言通过自己的简单解释来让大家了解为什么要对类进行实例化。

1、网上随便找的一篇对类的解释举例

​ 类是一组相关的数据和方法的集合。通过实例化一个类,我们可以创建一个对象,这个对象将具有该类定义的所有属性和方法。实例化的目的是为了创建一个独立的对象,每个对象都有自己的状态和行为。通过实例化,我们可以动态地使用类中定义的成员变量和方法,实现具体的功能。

PS:哈哈,是不是看着有点难以理解,其实当你学深也能看懂上面的解释的比如:动态使用成员变量、方法等解释。但是初学者或者学的不是特别熟练并不一定能理解,而且至此我主要是讲解对类进行实例有什么用,而不是类本身设计出来有哪些作用。

2、代码演示和解释

  • 首先创建一个名为Person的类。

    class Person:
        def __init__(self, hobby:str, age:int, weight:str):
            self.hobby = hobby
            self.age = age
            self.weight = weight
        def hobby_info(self):
            print('爱好是{}。'.format(self.hobby))
        def age_info(self):
            print('年龄是{}。'.format(self.age))
        def weight_info(self):
            print(f'体重是{self.weight}。')
    
    # 下面进行实例化
    xiaoming = Person('篮球',17,'70kg')
    xiaoming.hobby_info() # =>爱好是篮球
    
  • 代码解释

​ 上面是通过Python代码简单的创建的一个“类”并进行实例化,类的实例名字是xiaoming(小明),之所以用拼音来命名实例其实就是为了解释为什么要 进行实例,抛开那些封装、继承、多态、复用的解释放一边。其实,实例本质就是为了来区别是哪一个“变量”在用这个类。

  •   Person('篮球',17,'70kg').weight_info() # =>体重是70kg。
    

    ​ 其实上面这一段代码也能输出结果"体重是70kg。",之所以进行实例就是为了明白是一个名叫xiaoming(小明)的实例来调用自己的爱好信息hobby_info(),在以后的开发这样更加方便自己通过实例名达到用名知意

  • 比如下面这一段代码,实例为zhangsan(张三)

  •   zhangsan = Person('跑步',31,'78kg')
      zhangsan.hobby_info() # =>爱好是跑步
    

​ 通过这一段代码我相信你能直观通过zhangsan.hobby_info()代码知道,自己在调用谁谁谁的什么类型信息。(代码调用的是:张三的爱好)

3、总结

​ 我们明白了一个关键词,类实例主要是为了见名知意,这种设计也是为了自己以后项目写的很庞大之后,能够通过实例名字和调用的方法信息知道调用的是谁的什么信息,尤其是在z合作开发或者给其他人看最为重要。

  • 类的实例名就是为了方便通过命名调用后知道调用的是谁,类就是对现实生活的一种抽象出来的东西,比如有一个Cat(猫)类。通过类实例名字:lihuamao(狸花猫)、nainiumao(奶牛猫)能直接区分类的实例是什么属于类型的了(假如猫这个类有一个喜欢吃什么牌子猫粮的方法,你总不可能将实例命名成zhangsan(张三),虽然这样也能运行,但是张三吃猫粮确实有点.....,哈哈哈),这里演示使用的拼音,实际开发中通过英语命名类的实例名字就行。

标签:info,为什么,weight,self,实例,hobby,zhangsan
From: https://www.cnblogs.com/cloud07/p/18180982

相关文章

  • 为什么在有@Transactional注解的方法,一定要加rollbackFor异常回滚的异常类型?
    在spring项目中,@Transactional注解默认会回滚运行时异常(RuntimeException)及其子类当你在一个有@Transactional注解方法里面抛了一个Expection类型的异常,呢它是不支持事务回滚的,异常继承体系我们在一个方法里面要对事务进行操作,如果要抛异常,应该抛出untimeException,不能直接......
  • Linux系统硬链接和软链接具体实例
    Linux系统硬链接和软链接具体实例目录Linux系统硬链接和软链接具体实例创建链接命令目录与链接目录文件在Linux中,元数据中的inode号(inode是文件元数据的一部分但其并不包含文件名,inode号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系......
  • HashCode 为什么使用 31 作为乘数?
    为什么java的hashcode的选用31次方?以下是java源码部分publicinthashCode(){inth=hash;if(h==0&&value.length>0){charval[]=value;for(inti=0;i<value.length;i++){h=31*h+val[i];......
  • 为什么会查询不到DNS信息?怎么排查?
    DNS(域名系统)是将域名转换为相应IP地址的关键系统。查询DNS信息具有重要作用,通过查询DNS信息,我们可以知道域名对应的IP地址,这是最主要的信息,使设备能与目标服务器进行通信;其次是域名的相关记录,如MX记录(邮件交换记录)等,了解与邮件服务相关的信息;以及域名的状态,如是否正常等......
  • 非k8s Etcd集群单个实例无法连上其他2个后反复重启
    通过kind部署3个etcd实例构成的k8s集群。cat<<EOF|kindcreatecluster--nametest--config-kind:ClusterapiVersion:kind.x-k8s.io/v1alpha4networking:kubeProxyMode:ipvsipFamily:ipv4apiServerAddress:127.0.0.1apiServerPort:0podSubnet:"......
  • 对于耗时比较长的程序,比如请求外部链接,为什么swoole比php-fpm并发好
    Swoole相比PHP-FPM在处理耗时较长的程序,如请求外部链接时表现出更高的并发能力,原因主要包括以下几点:1.**常驻内存**:Swoole是一个高性能的异步并发框架,它以扩展的形式运行在PHP中,能够将PHP程序常驻在内存中。这意味着Swoole的服务一旦启动,就会持续运行,不需要为每个请求创建和销毁......
  • All in One:Prometheus 多实例数据统一管理最佳实践
    01引言Prometheus作为目前最主流的可观测开源项目之一,已经成为云原生监控的事实标准,被众多企业广泛应用。在使用Prometheus的时候,我们经常会遇到全局视图的需求,但是数据确分散在不同的Prometheus实例中,遇到这种情况该怎么解决呢?本文列举了社区一般解决方案,同时给出了阿里云......
  • 搞IT的为什么不建议搞底层(编译器、编程语言、)——当你搬进你的新家之后,你会在意这个楼
    文字表达引自:https://www.youtube.com/watch?v=KITqGv1qYg8当你搬进你的新家之后,你会在意这个楼是谁打的地基吗?你猜猜那些打地基的工人赚多少钱,卖你沙发电视机微波炉的人赚多少钱,当你在你温馨的小家里舒适的生活的时候,你会想这地基打的真好吗,只有一种情况下你会想到地基的事,就......
  • 经验之谈:我为什么选择了这样一个激进的缓存大Key治理方案
    一、引言本文将结合我的一次Redis大Key的治理经验,来浅谈一下缓存大Key的治理方案选择。文中主要包括缓存大Key基础知识、大Key治理方案选择、大Key治理案例等,适合有一定开发经验的开发者阅读,希望对大家有帮助。二、缓存大Key基础知识2.1大Key的标准集合类型元素数量>5000或者......
  • Verilog插件:补全模块实例模板
    https://mp.weixin.qq.com/s/tiaXdddID5-hxPtJZOvm8gIntellijIDEA插件VerilogLanguageSupport(插件链接),v2024.2.0版本特性。     https://mp.weixin.qq.com/s/tiaXdddID5-hxPtJZOvm8g ......