类的实例化过程

一、定义一个类

class Dog(object):   # 定义class

    def __init__(self, name):  # 构造函数,构造方法 == 初始化方法
        self.name = name   # d.name = name

    def say_hi(self):   # 类的方法
        print("Hello, I am a dog. My name is", self.name)

    def eat(self, food):
        print("%s is eating %s." % (self.name, food))

d = Dog("xiaohei")  # Dog(d,"xiaohei")  d == self

# d 实例化的对象即实例,类中的self相当于实例

d.say_hi()   # d.say_hai(d)

d.eat(‘beaf‘)
  • 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
  • self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

二、self代表的实例,而非类

  类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

class Dog(object):

    def prt(self):
        print(self)
        print(self.__class__)

d = Dog()

print(d)
print("-------------")
d.prt()

#输出
<__main__.Dog object at 0x000001DDBD10C5F8>
-------------
<__main__.Dog object at 0x000001DDBD10C5F8>
<class ‘__main__.Dog‘>

  从执行结果可以很明显的看出,self 代表的是类的实例,代表当前对象的地址,而 self.class 则指向类。

三、创建实例对象

  实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。  

# 创建一个Dog类的对象
d = Dog("xiaohei")

  实例化后的对象又称之为:实例

四、访问属性  

  您可以使用点(.)来访问对象的属性 

# 通过 d.方法   来访问属性
d.eat(‘beaf‘)

#输出
xiaohei is eating beaf.

  

时间: 2024-10-26 19:06:19

类的实例化过程的相关文章

【python】-- 类的实例化过程、特征、共有属性和私有属性

实例化过程 1.类的定义和语法 class dog(object): #用class定义类 "dog class" #对类的说明 def __init__(self,name): #构造函数或者是构造方法,也可以叫初始化方法 self.name = name def sayhi(self): #类方法 "sayhi funcation" #对类方法的说明 print("hello,i am a dog,my name is ",self.name

ThinkPHP6源码:从Http类的实例化看依赖注入是如何实现的

ThinkPHP 6 从原先的 App 类中分离出 Http 类,负责应用的初始化和调度等功能,而 App 类则专注于容器的管理,符合单一职责原则. 以下源码分析,我们可以从 App,Http 类的实例化过程,了解类是如何实现自动实例化的,依赖注入是怎么实现的. 从入口文件出发 当访问一个 ThinkPHP 搭建的站点,框架最先是从入口文件开始的,然后才是应用初始化.路由解析.控制器调用和响应输出等操作. 入口文件主要代码如下: // 引入自动加载器,实现类的自动加载功能(PSR4标准) //

创建Java类并实例化的基本过程

1 package com.sanguosha.java; 2 /* 3 * 面向对象实现的过程 4 * 1.创建类并设计类的成员(成员变量即属性and成员方法即方法) 5 * 2.通过类来创建类的对象,也称类的实例化 6 * 3.通过(对象.属性)和(对象.方法)调用,完成相应的功能 7 */ 8 public class Zoo { 9 public static void main(String[] args) { 10 //基本数据类型的实例化 11 int n=10; 12 //数组的

10. JavaSE-子类实例化过程 & 构造方法间调用

子类的实例化过程: 子类中所有的构造函数默认都会访问父类中空参数的构造函数. class Parent { Parent(){ System.out.println("parent class run"); } } class Children extends Parent { Children(){ //super();//调用的就是父类空参数的构造函数 System.out.println("children class run"); //return; /*说

Mybatis深入之DataSource实例化过程

Mybatis深入之DataSource实例化过程 简介 主要介绍Mybatis启动过程中DataSource实例化的过程.为后面解析一个完整SQL执行过程做个前章. Mybatis中DataSource体系 MybatisDataSource整体简介 Mybatis中关于数据库的类都在org.apache.ibatis.datasource包中 Mybatis配置文件中关于数据库的配置: <environments default="development"> <e

【Spring源码分析】非懒加载的Bean实例化过程(下篇)

doCreateBean方法 上文[Spring源码分析]非懒加载的Bean实例化过程(上篇),分析了单例的Bean初始化流程,并跟踪代码进入了主流程,看到了Bean是如何被实例化出来的.先贴一下AbstractAutowireCapableBeanFactory的doCreateBean方法代码: 1 protected Object doCreateBean(final String beanName, final RootBeanDefinition mbd, final Object[]

面向对象(子父类中构造函数的特点-子类实例化过程)

/* 3,子父类中的构造函数. 在对子类对象进行初始化时,父类的构造函数也会运行, 那是因为子类的构造函数默认第一行有一条隐式的语句 super(); super():会访问父类中空参数的构造函数.而且子类中所有的构造函数默认第一行都是super(); 为什么子类一定要访问父类中的构造函数. 因为父类中的数据子类可以直接获取.所以子类对象在建立时,需要先查看父类是如何对这些数据进行初始化的.//指在在父类构造函数初始化 所以子类在对象初始化时,要先访问一下父类中的构造函数. 如果要访问父类中指定

一个对象的实例化过程【重点】

一.过程  Person p = new Person();  1,JVM会去读取指定路径下的Person.class文件,并加载进内存,    并会先加载Person的父类(如果有直接父类的情况下)  2,在堆内存中开辟空间,分配地址.  3,并在对象空间中,对对象中的属性进行默认初始化  4,调用对应的构造函数,进行初始化  5,在构造函数中,第一行会先调用父类中的构造函数进行初始化.  6,父类初始化完毕后,再对子类的属性,进行显示初始化.  7,指定构造函数的特定初始化  8,初始化完毕

python基础8之类的实例化过程剖析

一.概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性. 二.类的语法 2.1 语法 class dog(object): #用class定义类 "dog class" #对类的说明 def __init__(self,name): #构造函数或者是构造方法,也可以叫初始化方法 self.name = name def sayhi(self): #类方法 "sayhi funcation&q