类的基本使用(引用小猿圈)

class Dog(): # 类以class开头,类的名字使用驼峰体命名。不加()为经典类,加()为新式类

d_type = "京巴" # 类的成员变量,类属性,类变量(属于每个实例共有的属性)

def __init__(self,name,age): # 初始化方法,实例化的时候会自动执行,会进行一些初始化工作

self.name = name # 将name与实例进行绑定,也就变成了私有属性

self.age = age

def say_hi(self): # 类方法,第一个参数是self,self代表类实例本身

print("hi,大家好我是一个{}".format(self.d_type))

# d = Dog() # 类的实例化

# d2 = Dog() # 类的实例化

d = Dog("mjj",12) # 类的实例化,实例化带有私有属性,这里的参数会直接传给__init__的方法中,这就是函数中参数的传递了

d2 = Dog(name="ccc",age=18)

print(d.name,d.age)

print(d2.name,d2.age)

print(d.d_type) # 类的实例化调用类属性

print(d2.d_type) # 类的实例化调用类属性

d.say_hi() # 使用类的实例化调用类方法

d2.say_hi() # 使用类的实例化调用类方法

print(id(d.d_type),id(d2.d_type))

类属性:属于公共属性,这个值是存在类的内存空间,(每个实例有自己的内存空间)

print(id(d.d_type),id(d2.d_type))

私有属性:存储在初始化方法中,通过self.xxx = xxx将属性与实例进行绑定,因为self代表实例本身的嘛

类方法中调用私有属性,使用self.xxx

理解self是实例本身

看我使用d.say_hello(),并没有传递任何的参数,但是没有报错。我们知道函数如果有形参的话,就必须要传递实参与之相对应,是因为python自动给传递了一个参数d.say_hello()相当于d.say_hello(d),为了验证我们在方法里面打印这个self看看与实例d的id是否一样

class Dog(): # 类以class开头,类的名字使用驼峰体命名。不加()为经典类,加()为新式类

d_type = "京巴" # 类的成员变量,类属性,类变量(属于每个实例共有的属性)

def __init__(self,name,age): # 初始化方法,实例化的时候会自动执行,会进行一些初始化工作

self.name = name # 将name与实例进行绑定,也就变成了私有属性,把这两个值真正的存在实例里

self.age = age

def say_hello(self):

print("hello ,大家好,我是{},年龄是{}".format(self.name,self.age))

print("这里是类中say_hello()方法中的self的内存id:{}".format(id(self)))

d = Dog("mjj",12) # 类的实例化,实例化带有私有属性,这里的参数会直接传给__init__的方法中,这就是函数中参数的传递了

print("这个是实例化对象d的内存id:{}".format(id(d)))

d.say_hello()

-

那为什么python要自动给你传self,也就是实例本身呢?

是为了要在类中打通私有属性与方法之间的调用,他知道你要用,就给你用

在__init__中给你绑定上self,下面的say_hello(),再将self传递过来,这样你就可以使用了

理解类变量和私有属性之间的区别

![image-20200506230926158](/Users/mac/Library/Application Support/typora-user-images/image-20200506230926158.png)

附:代码

# -*- conding:utf-8 -*-

# @Time : 2020/5/6 21:49

# @Author : shanshan

# @File : 类的基本使用.py

class Dog(): # 类以class开头,类的名字使用驼峰体命名。不加()为经典类,加()为新式类

d_type = "京巴" # 类的成员变量,类属性,类变量(属于每个实例共有的属性)

def __init__(self, name, age): # 初始化方法,实例化的时候会自动执行,会进行一些初始化工作

self.name = name # 将name与实例进行绑定,也就变成了私有属性,把这两个值真正的存在实例里

self.age = age

def say_hi(self): # 类方法,第一个参数是self,self代表类实例本身

print("hi,大家好我是一个{}".format(self.d_type))

def say_hello(self):

print("hello ,大家好,我是{},年龄是{}".format(self.name, self.age))

print("这里是类中say_hello()方法中的self的内存id:{}".format(id(self)))

# d = Dog() # 类的实例化

# d2 = Dog() # 类的实例化

d = Dog("mjj", 12) # 类的实例化,实例化带有私有属性,这里的参数会直接传给__init__的方法中,这就是函数中参数的传递了

d2 = Dog(name="ccc", age=18)

print("这个是实例化对象d的内存id:{}".format(id(d)))

d.say_hello()

# d2.say_hello()

print(d.name, d.age)

print(d2.name, d2.age)

print(d.d_type) # 类的实例化调用类属性

print(d2.d_type) # 类的实例化调用类属性

d.say_hi() # 使用类的实例化调用类方法

d2.say_hi() # 使用类的实例化调用类方法

print(id(d.d_type), id(d2.d_type))

python基本使用-python-类的基本使用相关推荐

  1. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  2. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  3. python中若干关于类的问题

    文章目录 前言 类的构造 类的方法 前言 本文介绍python中若干关于类的难题,这些问题或者概念竟然让人无法理解或者混淆.因而记录下来,若想到新的会继续更新. 类的构造 我们只知道__init__( ...

  4. [转]深刻理解Python中的元类(metaclass)

    类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Pytho ...

  5. Python中的元类是什么?

    元类是什么,我们将它们用于什么? #1楼 请注意,此答案适用于2008年编写的Python 2.x,元类在3.x中略有不同. 元类是使"类"工作的秘诀. 新样式对象的默认元类称为& ...

  6. python装饰器类-Python 装饰器装饰类中的方法

    title: Python 装饰器装饰类中的方法 comments: true date: 2017-04-17 20:44:31 tags: ['Python', 'Decorate'] categ ...

  7. python装饰器实例-基于Python 装饰器装饰类中的方法实例

    title: Python 装饰器装饰类中的方法 comments: true date: 2017-04-17 20:44:31 tags: ['Python', 'Decorate'] categ ...

  8. python叫什么-python中什么叫类

    python中什么叫类? 可以视为种类或者类型的同义词.所有的对象都属于某一个类,称为类的实例. 例如:鸟就是"鸟类"的实例.这就是一个有很多子类的一般(抽象)类:看到的鸟可能属于 ...

  9. python简介怎么写-python中如何写类

    类的定义 Python中,定义类是通过class关键字,例如我们定义一个存储学生信息的类: class Student(object): pass class后面紧接着是类名,即Student,类名通 ...

  10. python判断是否为类的实例,是否为子类

    python判断是否为类的实例,是否为子类 文章目录: 一.获取类实例的名称 二.判断一个类是否是另外一个类的实例 三.判断某个实例是否是指定类的实例 首先定义两个类,一个父类,一个子类,这里并不定义 ...

最新文章

  1. Expression Blend学习动画基础
  2. mysql超时失效c3p0_解决c3p0和MySQL集成情况下,连接长时间闲置后重新使用时报错的问题...
  3. 8分钟答辩稿_干货 | 论文答辩,该掌握哪些技巧?
  4. Leetcode 53 最大子串和
  5. ASP.NET Core中为指定类添加WebApi服务功能
  6. Facebook轮播连结广告可展示5个图像与连结
  7. React-Native的TextInput组件的设置以及获取输入框的内容
  8. Python 爬虫---(5)Requests库的使用
  9. MyBatis基于Java API配置
  10. 新版CSDN编辑器示例(代码及显示样式)
  11. ASSD: Attentive Single Shot Multibox Detector
  12. JPG图片转换成Word文字教程分享
  13. 什么是商业模式(概念篇)
  14. 如何判断矩阵的谱半径 C语言,矩阵谱半径
  15. PSP 2000 USB连接后无法显示记忆棒内容 解决办法
  16. 在纪中的第二天,2017-7-8 总结:
  17. Java十进制转换为二进制算法
  18. Multisim-滑动变阻器、稳压二极管
  19. NOSQL的cap 原理
  20. c语言rfmtdate函数,Ecshop后台流程图

热门文章

  1. 异步任务-AsyncTask
  2. mac bash 下使用vi 快捷方式——因为没有alt键 所以没有办法 用vi模式也非常方便的...
  3. 421. Maximum XOR of Two Numbers in an Array——本质:利用trie数据结构查找
  4. composer 修改为 国内镜像
  5. 【题解】HNOI2008GT考试
  6. 使用 mysql workbench 建议
  7. [QA] MySQL Error 1050(42S01): Table already exist
  8. E-mail Composition and Decoding
  9. 铃铛计数问题——分块
  10. python抓取新浪微博评论并分析