Python-15-类的定义和使用

类是什么?官方定义类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新的对象 类型,从而允许创建一个该类型的新 实例 。每个类的实例可

Python-15-类的定义和使用

类是什么?

官方定义

类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新的对象 类型,从而允许创建一个该类型的新 实例 。每个类的实例可以拥有保存自己状态的属性。一个类的实例也可以有改变自己状态的(定义在类中的)方法。

简单的说,类就是一个事物的抽象描述。所以类中可以包含描述类的方法和属性,其中方法又分为普通方法,类方法,静态方法。详细区别可查看Python的@staticmethod和@clasethod的作用与区别,今天主要介绍普通方法。

定义方式:(类似函数的定义),用class来标识。

就像这样:

class ClassName: <statements> def funs(self, arg): # self is the instance of class <fun statements> @clasethod 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.pyit 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__;

点击↓↓↓

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
苏西苏西认证作者
上一篇 2022年12月25日 10:29
下一篇 2022年12月25日 10:38

相关文章

发表回复

登录后才能评论

客服QQ: 8838832

客服微信