使用场景:多个对象(由同一个类产生)的属性同名且值都一样,这时就需要使用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. BZOJ 3546 [ONTAK2010]Life of the Party (二分图最大匹配必须点)

    题解:给出一个二分图,问你取点哪个点会使得二分图匹配数减少. 解法:其实就是问二分图匹配的必须点.先对初始二分图做一次最大匹配. 现在考虑左边点,看残余网络上的边重新构图:如果是匹配边那么就从右往左连 ...

  2. Codeforces 348C Subset Sums 分块思想

    题意思路:https://www.cnblogs.com/jianrenfang/p/6502858.html 第一次见这种思路,对于集合大小分为两种类型,一种是重集合,一种是轻集合,对于重集合,我们 ...

  3. vue中使用axios进行http通信

    1.安装 npm install axios 2.在main.js中全局注册 // axios不可以通过use引入,可以通过修改vue原型链 import axios from 'axios' Vue ...

  4. 大牛公司的github

    Google Google https://github.com/google Google Samples https://github.com/googlesamples Google Codel ...

  5. docker安装(4)

    centos6 docker安装 wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/epel-6.repo yum install -y ...

  6. 源码编译安装PHP Version 5.6.30------踩了无数坑,重装了十几次服务器才会的,不容易啊!

    1 环境准备 yum install gcc bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel openssl-devel ...

  7. json path espressions的语法学习

    json path espressions的语法学习 $:跟对象\元素 @:当前对象\元素 ?():应用过滤器(脚本)表达式 如: { "store": {    "bo ...

  8. Codeforces 1176B - Merge it!

    题目链接:http://codeforces.com/problemset/problem/1176/B 题意:给定序列,任意俩个元素可以相加成一个元素,求序列元素能被3整除的最大数量. 思路: 对于 ...

  9. HTML —— 表格

    复习下关于html中的表格. 基本结构: 表格由 table 标签为父标签进行包裹,可以在 table 上添加几种属性. border : 定义表格的边框. cellspacing : 间距,指单元格 ...

  10. python中正则匹配之re模块

    Python中正则表达式 re:re是提供正则表达式匹配操作的模块 一.什么是正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某个模式匹配,Python 自1.5版本起 ...