网站首页 > 技术文章 正文

类是什么?
官方定义
类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新的对象 类型,从而允许创建一个该类型的新 实例 。每个类的实例可以拥有保存自己状态的属性。一个类的实例也可以有改变自己状态的(定义在类中的)方法。
简单的说,类就是一个事物的抽象描述。所以类中可以包含描述类的方法和属性,其中方法又分为普通方法,类方法,静态方法。详细区别可查看Python的@staticmethod和@classmethod的作用与区别,今天主要介绍普通方法。
定义方式:(类似函数的定义),用class来标识。
就像这样:
class ClassName:
<statements>
def funs(self, arg):
# self is the instance of class
<fun statements>
@classmethod
def clsFuns(cls, arg):
# cls is the class
<statements>
@staticmethod
def staticFun(arg):
# 与普通函数类似
<statements>
类怎么用?
需求:我们需要封装一个通用的类来描述男人和女人。
class Man(object):
def __init__(self):
print("it is man class...")
def canPregnant(self):
print("nonono...man can't pregnant...")
def haveBeard(self):
print("yep...")
class Woman(object):
def __init__(self):
print("it is woman class...")
def canPregnant(self):
print("yep...woman can pregnant...")
def haveBeard(self):
print("nonono...")
定义的男人和女人类都描述了其能否怀孕,是否长胡子。
类的使用:
boy=Man() # 实例化一个男孩
girl=Woman() # 实例化一个女孩
boy.canPregnant() # 男孩是否可以怀孕?
girl.canPregnant() # 女孩是否可以怀孕?
# 输出
? test git:(master) ? python3 test.py
it is man class...
it is woman class...
nonono...man can't pregnant...
yep...woman can pregnant...
类的变量与可访问性
变量(属性)分类:
- 类变量:直接定义在类中,为所有类对象共享;通过类名访问clsName.var;
- 实例变量:每个实例独有的数据(在__init__方法中定义、初始化);通过实例对象访问inst.var;
Python中的可访问性是通过约定来实现的:
- 私有属性:以两个下划线开始的,__var;
- 保护属性:以一个下划线开始的,_var;只能自身与子类可访问;
- 普通属性:以字母等开始的。
类的专有方法
Python通过约定一些专有的方法来增强类的功能:
- __init__:构造函数,在生成对象时调用(实例变量也在此函数中定义);
- __del__:析构函数,释放对象时使用;
- __repr__:打印(若有__str__,则先尝试str),转换;
- __setitem__:按照索引赋值;
- __getitem__:按照索引取值;
- __len__:获取长度,内置函数len()使用;
- __cmp__:比较运算;
- __call__:函数调用(对象看作一个算子);
- __add__:加运算;
- __sub__:减运算;
- __mul__:乘运算;
- __div__:除运算;
- __mod__:求余运算;
- __pow__:乘方运算;
repr与str:repr()与str()为内置函数,对应类中的__repr__与__str__来处理字符串:
- repr对Python(程序员)友好,生成的字符串应可通过eval()重构对象;
- str为用户友好,方便用户理解的输出;
- print时先查看__str__,若未定义,再查看__repr__;
点击↓↓↓
- 上一篇: Python—文件操作 拿捏!
- 下一篇: 1-4、类-属性_笔记
猜你喜欢
- 2025-01-08 Python | 搞懂类的继承
- 2025-01-08 Python 类常用各种方法及区别
- 2025-01-08 python标识符
- 2025-01-08 站长在线Python教程:python中面向对象相关概述详解
- 2025-01-08 Python类的定义、封装、继承和多态
- 2025-01-08 深入探讨Python类函数的一些高级用法(封装)
- 2025-01-08 Python 知识点 #22 - 元类
- 2025-01-08 二、python类定义的讲解
- 2025-01-08 python 中实现接口类
- 2025-01-08 让我们详细学习下Python类吧!
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 90℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)