类
一、定义类
1、定义类
class 类名:
属性
方法
class Person:
name='张三'
age=18
def eat(self):
print('吃饭')
#创建对象
zs=Person()
zs.eat() #吃饭
#__init__()
#初始化方法,创建新对象后会自动调用,完成一些初始化的操作,构造函数
class People:
def __init__(self,name,sex,age):
'''
实例属性声明
'''
self.name=name
self.sex=sex
self.age=age
print('-----init-----函数的执行')
def eat(self):
print('%s吃饭'%self.name)
def printInfo(self):
print(self.name,self.sex,self.age)
def __str__(self):
return '%s吃饭'%self.name
xm=People('小明','男',18)
print(xm) #若没有__str__方法,结果:<__main__.People object at 0x00000280114EFCC0>
#若有,结果:小明吃饭
2、下划线函数,内部函数
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__div__: 除运算
__mod__: 求余运算
__pow__: 乘方
二、方法和函数
#1、私有成员
#在成员前面加__(两个)。访问私有成员:对象._类名__属性
#2、保护成员
#在成员前加一个_
class Root:
__total=0
def __init__(self,v):
self.__value=v
Root.__total+=1
def show(self): #普通实例方法
print('self.__value:',self.__value)
print('Root.__total:', Root.__total)
@classmethod #修饰器,声明类方法
def classShowTotal(cls): #类方法
print(cls.__total)
@staticmethod #修饰器,声明静态方法
def staticShowTotal(): #静态方法
print(Root.__total)
def __get(self):
return self.__value
1、方法和函数的区别:
方法一般指和特定实例绑定的函数,通过对象调用方法,对象本身被作为第一个参数隐式传递过去,普通函数不具备。
2、方法的区别:
实例方法:由对象调用,第一个参数是self
类方法:第一个参数为cls,通过类或它的实例来调用方法。
静态方法:由类调用不需要额外的参数,需要在类成员函数前面加上@staticmethod标记符
3、特殊方法:
构造函数__init__()
析构函数__del__(),用来释放对象占用的资源,自动调用,若用户未编写则提供一个默认的析构函数进行清除工作