Python10/22--面向对象编程/类与对象/init函数

类:
语法: class关键字 类名
# 类名规范 大写开头 驼峰命名法
class SHOldboyStudent:
# 描述该类对象的特征
school = "上海Oldboy"
name = "矮根"
age = 68
gender = "unknown"

# 在定义阶段
# 只要包含该类的py被执行 就会做两件事情
# 1.就会创建类的名称空间
# 2.执行代码 将产生的名称放入名称空间
print("========================")

# 描述该类对象的行为 通过函数
def say_hi(abc):
print(abc)
print("hello oldBoy")

#使用类中的属性
print(SHOldboyStudent.__dict__)
print(SHOldboyStudent.__dict__["name"])
print(SHOldboyStudent.name)

# 使用类中的函数
print(SHOldboyStudent.__dict__["say_hi"])
print(SHOldboyStudent.say_hi)
# 使用类直接调用类中函数时 与普通函数没有任何区别 位self仅仅是一个置参数
SHOldboyStudent.say_hi(10)



对象的使用
class OldboyStudent:
# 如果每个对象的这个属性都相同 才应该定义到类中 比如所有人的学校都是上海Oldboy
school = "上海Oldboy"

# 创建对象
# 语法: 在类名后加括号 与调用函数写法相同
# stu = OldboyStudent()
# # 访问对象的属性
# print(stu.school)
# print(OldboyStudent.school)

# 修改属性的值
# stu.school = "北京Oldboy"
# print(stu.school)
#
# # 增加属性
# stu.room_num = "1008"
# print(stu.room_num)
#
# # 删除属性
# del stu.room_num
# print(stu.room_num)

# 对象 与类的名称空间是独立的
# stu.school = "深圳oldboy" # 为对象的属性赋予新的值
# print(OldboyStudent.school) # 类中的属性不会变化
# stu.room_num = "1008" # 为对象增加属性
# # print(OldboyStudent.room_num) #类中也不会出现新的属性
# print(stu.__dict__)
# print(OldboyStudent.__dict__)

# 如果对象的属性是相同的 就放到类中 作为一个公共的数据
# stu.school #大家都是上海小区

# stu2 = OldboyStudent()
# print(stu2.__dict__)


init函数:
# __init__称之为初始化函数  它会在创建对象的时候自动执行
# 创建对象时
# 1.创建一个空对象
# 2.执行__init__函数 并且自动传入了这个对象

# 该函数的作用,就是为对象的属性赋初始值
#1. 使用场景 需要为每个对象定制不同的属性值
#2.__init__在创建对象后自动执行
#3.第一个self参数 指的是这个对象本身 不需要手动传值
 


1.所有程序都因该使用面向对象来设计吗?为什么?
不是所有程序都应该使用面向对象,应该面向对象会提高程序的复杂度,对于一些扩展要求不高的程序,则不一定非要使用面向对象
2.什么是对象 什么是类
对象指的是现实生活中实实在在存在的物体,并且其具备独特的特征与行为 反过来可以理解为 特征与行为的结合体
类是一些具备相同特征和技能的事物的抽象概念,不实际存在
3.在面向过程编程中我们思考解决方案时,是分析完成任务时需要哪些步骤,按照什么样的顺序来编写,而在面向对象编程中我们从操作者转变为指挥者 首先思考的是什么?
首先思考,完成任务需要哪些对象来参与
其次分析这些对象具备哪些特征和行为
最后按照分析结果编写class

4.一个类中通常包含变量和函数,它们分别用于描述什么?
变量用于描述该类对象共同的属性
函数用于描述该类对象具备的行为(技能)

5.类在定义阶段发生了什么
立即执行类中的代码 将产生的名字存放在类的名称空间中
6.创建对象时发生了什么
1.创建空对象
2.自动执行init函数 将这个对象以及额外的参数组装后传给该函数

7.什么是绑定方法,和普通函数有什么区别
绑定方法其实就是对象和函数得绑定在一起
在调用绑定方法时,会自动传入对象本身
最终执行的还是类中定义的函数
绑定方法仅仅是帮我们自动传入了对象
区别:
普通函数在调用时,根据函数声明有几个参数就一定要传几个参数
而绑定函数在调用时,会自动传入对象本身,所以通常我们手写的参数个数比声明的少一个

 

转载于:https://www.cnblogs.com/junge666/p/9832697.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django Form和ModelForm组件

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输…

ESLint 规则详解

前端界大神 Nicholas C. Zakas 在 2013 年开发的 ESLint,极大地方便了大家对 Javascript 代码进行代码规范检查。这个工具包含了 200 多条 Javascript 编码规范且运行迅速,是几乎每个前端项目都必备的辅助工具。可是,这么多规则,每…

全文搜索引擎 ElasticSearch 还是 Solr?

原文链接 最近项目组安排了一个任务,项目中用到了全文搜索,基于全文搜索 Solr,但是该 Solr 搜索云项目不稳定,经常查询不出来数据,需要手动全量同步,而且是其他团队在维护,依赖性太强&#xff0…

对局匹配

问题描述小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分,代表他的围棋水平。小明发现网站的自动对局系统在匹配对手时,只会将积分差恰好是K的两名用户匹配在一起。如果两人分差小于或大于K,系统都不会将他们匹…

NodeJS作为Web架构中间层的使用

截至2016年12月,中国网民规模已达7.31亿。传统的网站系统是否能够支撑得起如此庞大的且不断增长的用户访问并且为用户提供体验友好的页面? 一、传统的前后端: 二、传统的前后端分离问题: 性能问题: 1、渲染、数据都在…

Springboot项目修改html后不需要重启---springboot项目的热部署

一、spring-boot-devtools 在pom中直接引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency> 设置以下两项&#xff08…

Hibernate中session的get方法和load方法的区别

一.发送SQL时机&#xff1a; load方法采用延迟加载&#xff08;lazy懒加载&#xff09;&#xff0c;执行到这行代码的时候&#xff0c;不会发送SQL语句&#xff0c;当真正使用这个对象的数据&#xff08;对象的数据不包括主键&#xff09;的时候才发送SQL语句&#xff1b; get…

Node.js Web 开发框架大全《中间件篇》

这篇文章与大家分享优秀的 Node.js 中间件模块。Node 是一个服务器端 JavaScript 解释器&#xff0c;它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序&#xff0c;编写能够处理数万条同时连接到一个&#xff08;只有一个&#xff09;物理机的…

windows server 2012 流媒体服务器搭建(直播与点播)

IIS Live Smooth Streaming&#xff08;实时平滑流式处理&#xff09;是微软下一代流媒体解决方案。该技术是在IIS web中集成媒体传输平台IIS media services&#xff0c;实现利用标准 HTTP Web 技术以及高级 Silverlight 功能&#xff0c;确保在互联上传输质量最佳、播放流畅音…

团队项目第一篇——NABCD

团队名称&#xff1a;筑梦之舟 团队项目名称&#xff1a;跑跑 N&#xff08;Need&#xff09;需求&#xff1a; 有许多人在跑步时想了解自己的移动轨迹和跑步距离很不便利&#xff0c;无法了解跑步的日程&#xff0c;我们的软件就是为了更加方便热爱跑步的人能够参加到跑步之中…

Vue warn Failed to mount component: template or render function not defined

问题如图&#xff0c;造成这类的问题一般有这么几个原因。 代码的拼写问题&#xff0c;当然这是最低级的错误vue定义的问题&#xff0c;这里我说明两点 在组件内部定义组件时&#xff0c;template 对应的必须是html字符串引用外部组件时&#xff0c;vue文件必须以template标签…

Python实现线性回归2,梯度下降算法

接上篇 4.梯度下降算法 《斯坦福大学公开课 &#xff1a;机器学习课程》吴恩达讲解第二课时&#xff0c;是直接从梯度下降开始讲解&#xff0c;最后采用向量和矩阵的方式推导了解析解&#xff0c;国内很多培训视频是先讲解析解后讲梯度下降&#xff0c;个人认为梯度下降算法更为…

在centos和redhat上安装docker

前置条件 64-bit 系统kernel 3.101.检查内核版本&#xff0c;返回的值大于3.10即可。$ uname -r 2.使用 sudo 或 root 权限的用户登入终端。 3.卸载旧版本(如果安装过旧版本的话) $ yum remove docker \docker-common \docker-selinux \docker-engine 4.安装需要的软件包 #yum-…

mac 下用 brew 安装mongodb

mac 下安装mongoDB一般俩种方法. (1)下载源码,解压,编译,配置,启动 比较艰难的一种模式. (2)brew install mongodb ,然后就可以悠闲的品一口茶,顺便瞄一眼网易新闻,这是一种傻瓜模式. 但傻瓜模式也有人为干预的时候,粗略说一下使用brew 安装mongodb 1 zhangzhimoke:~/code$…

比较python类的两个instance(对象) 是否相等

http://www.yihaomen.com/article/python/281.htm 比较python类的两个instance(对象) 是否相等 作者:轻舞肥羊 日期:2012-10-25 字体大小: 小 中 大对于同一个Class,可以创建不同的实例(instance), 如何比较这两个 instance 是否相等呢&#xff1f;我们知道&#xff0c;对于计算…

Mybaits插入记录返回主键值

某些情况进行insert时不知道主键值&#xff08;主键为自增&#xff09;&#xff0c;例如系统新增用户时&#xff0c;有用户序号&#xff08;主键 自增&#xff09;&#xff0c;用户名&#xff0c;密码。插入时只需插入用户名和密码&#xff0c;之后取得mysql自增的序号。 如下为…

Mac 解决brew一直卡在Updating Homebrew

运行命令brew install node&#xff0c;结果界面一直卡在Updating Homebrew...上&#xff0c;有两种解决办法 方法一&#xff1a;直接关闭brew每次执行命令时的自动更新&#xff08;推荐&#xff09; vim ~/.bash_profile# 新增一行 export HOMEBREW_NO_AUTO_UPDATEtrue方法二…

CAS单点登录原理简单介绍

1. SSO简介 1.1 单点登录定义 单点登录(Single sign on)&#xff0c;英文名称缩写SSO&#xff0c;SSO的意思就是在多系统的环境中&#xff0c;登录单方系统&#xff0c;就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以。计划在项目中加…

前端跨域通信的几种方式

前言 前端通信类的问题&#xff0c;主要包括以下内容&#xff1a; 1、什么是同源策略及限制 同源策略是一个概念&#xff0c;就一句话。有什么限制&#xff0c;就三句话。能说出来即可。 2、前后端如何通信 如果你不准备&#xff0c;估计也就只能说出ajax。 3、如何创建Aja…

T4((Text Template Transformation Toolkit))模版引擎之基础入门 C#中文本模板(.tt)的应用...

1 关于C#中文本模板(.tt)的简单应用https://blog.csdn.net/zunguitiancheng/article/details/78011145 任何一个傻瓜都能写出计算机能理解的程序&#xff0c;而优秀的程序员却能写出别人能读得懂的程序。—— Martin Fowler 2 T4模版引擎之生成数据库实体类 http://www.cnblogs…