您现在的位置是:主页 > news > 成都网站建设定/免费自助建站哪个最好
成都网站建设定/免费自助建站哪个最好
admin2025/4/21 15:30:35【news】
简介成都网站建设定,免费自助建站哪个最好,成都设计院,做百度移动端网站优化类是什么?官方定义类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新的对象 类型,从而允许创建一个该类型的新 实例 。每个类的实例可以拥有保存自己状态的属性。一个类的实例也可以有改变自己状态的(定义在类中的)…
类是什么?
官方定义
类提供了一种组合数据和功能的方法。创建一个新类意味着创建一个新的对象 类型,从而允许创建一个该类型的新 实例 。每个类的实例可以拥有保存自己状态的属性。一个类的实例也可以有改变自己状态的(定义在类中的)方法。
简单的说,类就是一个事物的抽象描述。所以类中可以包含描述类的方法和属性,其中方法又分为普通方法,类方法,静态方法。详细区别可查看Python的@staticmethod和@classmethod的作用与区别,今天主要介绍普通方法。
定义方式:(类似函数的定义),用class来标识。
就像这样:
class ClassName:<statements>def funs(self, arg):# self is the instance of class<fun statements>@classmethoddef clsFuns(cls, arg):# cls is the class<statements>@staticmethoddef 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面向对象的反射
Python的封装继承多态和多重继承
Python的@staticmethod和@classmethod的作用与区别
好文!必须在看