使用场景:多个对象(由同一个类产生)的属性同名且值都一样,这时就需要使用init()方法.

# 多个对象(由同一个类产生)的属性同名且值都一样,这时就需要使用__init__()方法.

# class 定义属性和方法,增加代码的复用性 __init__()方法
"""
双下划线开头,双下划线结尾的方法都具有特殊含义,并且此方法在特定情况下会自动调用.(调用就是使用,执行的意思)Python解释器会自动调用,内部已经写好了. 把定义属性的方法写在__init__()方法里面,当然,也可以自己定义.只是需要自己去写调用方法 称之为魔法方法.也叫运算符重载方法 在创建对象时就会自动调用.
__init__()方法叫初始化,功能: 定义属性 在其他的语言中也有__init__()方法,就是进行属性赋值操作的方法. 自我理解:类似手机或电脑在开机启动的时候进行的加载操作.可以简单理解为是一个程序正式运行前的准备工作. """
class Dog:
def __init__(self, name): # 这里的name称为自定义参数.不要写死了这里加形参进行传参操作.如果不想让属性的初始值写死,可以给init加形参,通过参数的方式传递给属性
self.type = '狗'
self.name = name # 自定义属性的初始值 # 先造对象,再调用init()方法init的实参应该在创建对象的类名后面的小括号中传递
dog1 = Dog('小花') # 在创建的时候就会执行init()方法,同时注意init()方法有一个位置参数(形参),不能调用的时候不能为空,所以这里一定要记得给init()传一个参数'小花'
print(id(dog1.name)) #
print(id(dog1.type)) # 2240461703328 虽然id地址一样,但是仍然不一样
print(dog1.name) # 小花
print(dog1) # <__main__.Dog object at 0x0000025674A58978>
# 都有属性type,值一样,但是 不是同一个属性.只是属性名字一样而已.创建的时候代码会走两遍,每次创建一个对象就会执行一遍
dog2 = Dog('小黑') # 小黑
print(dog2.name) #
print(id(dog2.name)) #
print(id(dog2.type)) # 2240461703328 虽然id地址一样,但是仍然不一样 # 类中写属性,只能在init()方法中写
# 这里记住:虽然打印输出的id值一样(地址值),但实际上dog1.type和dog2.type不一样,是独立的两个.只是在Python解释器中为了运行效率,将同一个type的值进行了缓存

__init__初始化方法的更多相关文章

  1. python面向对象的基础语法(dir内置函数、self参数、初始化方法、内置方法和属性)

    面相对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...

  2. Python __init__ 特殊方法

    在Python中有很多以双下划线开头且以双下划线结尾的固定方法.他们会在特定的时机被触发执行. __init__ 就是其中之一,它会在实例化之后自动被调用.以完成实例的初始化. >>> ...

  3. tensorflow中的参数初始化方法

    1. 初始化为常量 tf中使用tf.constant_initializer(value)类生成一个初始值为常量value的tensor对象. constant_initializer类的构造函数定义 ...

  4. super(Student,self).__init__()初始化的是什么东西?

    继承不是为了继承里面原来的属性和值么,不初始化的话,会有什么问题? 2015-04-04源自:python进阶 5-17642 浏览2 回答 最佳回答 2015-05-05 1 super(Stude ...

  5. Python是否存在方法方法重载及是否可以不显示声明初始化方法

    一.python中是否存在方法重载 对java有了解的程序员都知道,java中存在构造方法重载和普通方法重载,重载指的是方法名相同,参数列表不同的多个方法.python中是否也支持这两种方法重载,测试 ...

  6. Swift - 重写UIKit框架类的init初始化方法(以UITabBarController为例)

    原来写了篇文章讲UITabBarController的用法,当时是从UIViewController跳转到UITabBarController页面,代码如下: 1 self.presentViewCo ...

  7. js jquery 页面加载初始化方法

    js jquery 页面加载初始化方法 一.js页面加载初始化方法 // 1.在body里面写初始化方法. <body onload='init()'> </body> < ...

  8. caffe中权值初始化方法

    首先说明:在caffe/include/caffe中的 filer.hpp文件中有它的源文件,如果想看,可以看看哦,反正我是不想看,代码细节吧,现在不想知道太多,有个宏观的idea就可以啦,如果想看代 ...

  9. Swift开发第十篇——可变参数函数&初始化方法顺序

    本篇分为两部分: 一.Swift中的可变参数函数 二.初始化方法的顺序 一.Swift中的可变参数函数 可变参数函数指的是可以接受任意多个参数的函数,在 OC 中,拼接字符串的函数就属于可变参数函数 ...

随机推荐

  1. Android Service完全解析(上)

    转载:http://blog.csdn.net/guolin_blog/article/details/11952435 相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Androi ...

  2. Oracle 环境部署 以及数据库创建 ,用户新建和权限分配

    1.右键我的电脑--->属性--->高级系统设置 2.环境变量---->新建 总共配置三个变量 (1)变量名 ORACLE_HOME 变量值 G:\app\TH\product\11 ...

  3. Android 6.0 - 动态权限管理的解决方案(转)

    转自:http://www.cnblogs.com/dubo-/p/6018262.html Android 6.0 - 动态权限管理的解决方案   转载请标注 Android 6.0版本(Api 2 ...

  4. nodejs模块——fs模块 使用fs.read读文件

    使用fs.read读文件 fs.read() 先介绍fs.open. fs.open(path,flags,[mode],callback)方法用于打开文件,以便fs.read()读取. 参数说明: ...

  5. 7、执行 suite 后,result.html 测试报告中,测试结果全部显示为通过原因分析

    测试用例中,断言 异常后,必须 raise 抛出异常, 若无raise ,则测试报告中测试结果全部显示为通过. 抛出后,显示实际测试结果,通过/未通过 __author__ = 'Administra ...

  6. mysqldump 导出数据库

    mysqldump -h47.52.67.230 -P3306 -uroot -pAbc\!@#456789 --hex-blob --opt test_fooku_db >/home/test ...

  7. 【2017中国大学生程序设计竞赛 - 网络选拔赛】Friend-Graph

    [链接]http://acm.hdu.edu.cn/showproblem.php?pid=6152 [题意] 有一个队伍,如果队伍里有三个或三个以上的人互相认识 或者队伍里有三个或三个以上的人互相不 ...

  8. angularjs 中 Factory,Service,Provider 之间的区别

    本片文章是使用了 angularjs 中使用 service 在controller 之间 share 对象和数据 的code(http://jsfiddle.net/kn46u0uj/1/) 来进行 ...

  9. js中的函数声明和函数表达式的区别

    目录 一.声明与表达式的格式 1.1 声明式的格式: 1.2 表达式的格式: 二.区别 2.1 函数表达式可以直接在后面加括号执行,而函数声明不可以. 2.2 函数表达式可以被提前解析出来 2.3 命 ...

  10. HTML-参考手册: HTTP 状态消息

    ylbtech-HTML-参考手册: HTTP 状态消息 1.返回顶部 1. HTTP 状态消息 当浏览器从 web 服务器请求服务时,可能会发生错误. 以下列举了有可能会返回的一系列 HTTP 状态 ...