Python类的定义、方法和属性使用
类用来描述具有相同的属性和方法的对象的集合。
对于在类中定义的函数,称为方法。
类变量不直接叫做类变量,称为属性。
1、类的定义
例子:
class User():
pass
说明:
(1)定义了一个类名为User的类
(2)类名一般约定用大写字母开头,函数则用小写字母开头,以做区分
(3)用pass表示为空类,暂时还没准备好类的内容
2、类的方法
例子:
class User():
def say(self) -> None:
print('hello')
调用:
a = User()
a.say()
print(hex(id(a)))
print(a)
运行结果:
hello
0x36dfd68
<__main__.User object at 0x00000000036DFD68>
说明:
(1)上面定义了方法say,方法可以有0到多个参数,但第一个参数是必须有的,第一个参数有约定俗成的名字叫self在对象上调用一个方法时,不需要手动为self提供一个值,原因是解释器会自动把调用对象实例做为第一个参数,赋值给各个方法的self参数。
例如上面a.say()不需要为self提供值,解释器会自动转换为User.say(a)
(2)self 代表的是类的实例,上面hex(id(a))查询实例的内存地址,可以看出和打印对象名是同个地址。
对象可以用__repr__方法覆盖,例子:
class User():
def __repr__(self) -> str:
return '覆盖默认行为'
调用:
a = User()
print(a)
运行结果:
覆盖默认行为
3、类的属性
例子:
class User():
def __init__(self, name: str) -> None:
self.name = name
def say(self) -> str:
print('我的名字是:', self.name)
调用:
a = User('张三')
print(a.name)
a.say()
运行结果:
张三
我的名字是: 张三
说明:
(1)用构造方法__init__初始化属性,在方法中用self.属性名访问。
Python类的定义、方法和属性使用的更多相关文章
- 使用Object类为实例定义方法和属性
1.1 可以使用 Object 类直接定义个实例,并且为该对象赋属性和方法,例如: var person_1 = { nickName:"xiaowu", age:28, show ...
- python类的定义和使用
python中类的声明使用关键词class,可以提供一个可选的父类或者说基类,如果没有合适的基类,那就用object作为基类. 定义格式: class 类名(object): "类的说明文档 ...
- Python 类的魔术方法
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic method ...
- Python学习笔记之面向对象编程(三)Python类的魔术方法
python类中有一些方法前后都有两个下划线,这类函数统称为魔术方法.这些方法有特殊的用途,有的不需要我们自己定义,有的则通过一些简单的定义可以实现比较神奇的功能 我主要把它们分为三个部分,下文也是分 ...
- Java中主类中定义方法加static和不加static的区别
Java中主类中定义方法加static和不加static的区别(前者可以省略类名直接在主方法调用(类名.方法),后者必须先实例化后用实例调用) 知识点:1.Getter and Setter 的应用 ...
- 使用 prototype 定义方法和属性
除了可以在类的构造器方法中定义方法和属性外,也可以使用 prototype 定义方法和属性.每个类都有这个属性,该属性是一个静态属性,因此无需实例化,只需使用类引用该属性即可. 1.1 使用 prot ...
- 第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解
第8.3节 Python类的__init__方法深入剖析:构造方法与继承详解 一. 引言 上两节介绍了构造方法的语法及参数,说明了构造方法是Python的类创建实例后首先执行的方法,并说明如果类 ...
- Java入门(2) —— 变量详解、运算符、定义类和定义方法以及方法的调用
1.变量 1.定义变量 1.声明的同时直接赋值 数据类型 变量名 = 值; 2.先声明,后赋值 声明: 数据类型 变量名; 赋值: 变量名 = 值; 2.数据类型 基本数据类型:4类8种 整数 --- ...
- python类之魔法方法
python类之魔法方法: class A(object): def __init__(self,x): self.x = x def __neg__(self): print('-v') def _ ...
随机推荐
- Spring Boot + Redis实战-利用自定义注解+分布式锁实现接口幂等性
场景 不管是传统行业还是互联网行业,我们都需要保证大部分操作是幂等性的,简单点说,就是无论用户点击多少次,操作多少遍,产生的结果都是一样的,是唯一的.而今次公司的项目里,又被我遇到了这么一个幂等性的问 ...
- NIO基础方法一
1.remaining();返回当前位置与limit之间得元素数. int[] intArray={1,2,3,4}; IntBuffer intBuffer=IntBuffer.wrap(intAr ...
- 【前端知识体系-NodeJS相关】对NodeJS模块机制的理解
1. CommonJS模块规范 1.1 模块引用 var math = require('math'); 1.2 模块定义 [!NOTE] 上下文提供exports对象用于导出当前模块的方法和变量,并 ...
- OpenCV:图像的裁剪
import cv2 import matplotlib.pyplot as plt def show(image): plt.imshow(image) plt.axis('off') plt.sh ...
- 【一】Gradle 初识
1.Gradle和Maven的对比 gradle 使用groovy语言,可以进行逻辑判断,maven基于xml,无法进行逻辑判断. gradle 可以在一个项目中,根据需求,生成2个不同的jar, m ...
- subprocess, re模块,logging, 包等使用方法
subprocess, re模块,logging, 包等使用方法 subprocess ''' subprocess: sub: 子 process: 进程 可以通过python代码给操作系统终端发送 ...
- 微信小程序之上传图片和图片预览
这几天一直负责做微信小程序这一块,也可以说是边做边学习吧,把自己做的微信小程序的一些功能分享出来,与大家探讨一下,相互学习相互进步. 先看下效果图 只写了一下效果样式的话希望大家不要太在意,下面马路杀 ...
- MySQL问题记录——2003-Can't connect to MySQL server on 'localhost'(10038)
MySQL问题记录——2003-Can't connect to MySQL server on 'localhost'(10038) 摘要:本文主要记录了连接到MySQL数据库时出现的问题以及解决办 ...
- Red Hat 4.4.7-4上安装glances填大大大坑实录,我的内心是崩溃的!!!
今天的任务是在公司的一台压力测试机上安装一个性能监控工具:glances 因为以前我已经多次安装和使用这个工具,我大意的以为整个过程是这样的: 分分钟搞定完事 然而 我们公司的服务器版本实在是太老了, ...
- Vue全局过滤器的使用 运用在时间过滤 内容添加crud
过滤器的使用 msgFormt是你自己定义的过滤器方法, Vue.filter是你自己定义的全局过滤器.没有s 过滤器要有返回值哈 用retuen Vue.filter("msgFo ...