1.类的成员
#类的成员有 字段和方法
class Foo:
nation='china' #静态字段 创建类里面 共性的东西
def __init__(self,name):
#普通字段 name 保存在对象里面
self.name=name
#普通方法 show 通过对象访问 也可以用类但是需要传递对象作为参数
def show(self):
print(self.name)
#静态方法 通过装饰器实现 self不是必须的 类调用
@staticmethod
def sta():
print('123')
# 类方法 必须有至少一个参数 一般是cls 类调用
@classmethod
def classmd(cls):
#cls是类的引用
print(cls)
Foo.nation #静态字段可以通过对象或者类民访问,一个改了,全部改变
a=Foo('henan')
a.name
a.nation
2.类中方法的属性
class Foo:
#通过装饰器
#不需要括号的方法
@property
def perr(self):
return 1
#可以赋值的东西
@perr.setter
def perr(self,val):
print(val)
#在删除时候操作的方法
@deleter
def perr(self):
print(666)
#第二种方式property
def f1(self):
return 123
def f2(self,v):
print(v)
def f3(self):
print('del')
per=property(fget=f1,fset=f2,fdel=f3)
a.perr #调用property装饰的方法
a.perr=123 #赋值 调用 perr.setter 装饰的方法
del a.perr #调用deleter装饰的方法 666
3.成员修饰符 共有成员 私有成员
class Foo:
__v='私有的静态字段'
def __init__(self,name,age):
self.name=name #共有字段
self.__age=age #私有字段 外部无法直接访问
def show(self):
return self.__age
def __f1(self): #私有的普通方法
return 123
#子类不能访问父类里面的私有成员
4.特殊成员
def Foo:
#构造方法
def __init__(self):
pass
#对象后面加() 类()()
def __call__(self,*args,**kwargs):
print('对象后面加()也可以执行')
#类型转换
def __int__(self):#转成int
return 111
def __str__(self):#转成int
retrun '123'
# 重载运算符
def __add__(self,other): # +加法 执行第一个对象的__add__并把第二个对象当作参数传递
pass
def __sub__(self, other):# -减法
pass
def __mul__(self, other): #乘法
pass
def __truediv__(self, other):#真除法,即/
pass
def __floordiv__(self, other):$#整除,即//
pass
def __mod__(self, other): #取模 ,即%
pass
def __divmod__(self, other): #定义当被divmod()调用时的行为,即,取余数
pass
def __pow__(self, power, modulo=None): #定义当被power()调用或者**运算时的行为
pass
def __lshift__(self, other): #定义左移
pass
def __rshift__(self, other):#右移
pass
def __and__(self, other): #按位与
pass
def __xor__(self, other): #按位异或
pass
def __or__(self, other): #按位或
pass
#析构方法
def__del__(self):
pass
#类或对象中的所有成员 字典方式返回
__dict__(self)
#类列表[]操作
def __getitem__(self,item): #下标查询 obj[1] 切片abj[1:4:2] !:4:2 自动被变成slice对象
if type(item)==slice:
pass #切片处理
item.start
item.stop
item.step
else:
pass #索引
def __setitem__(self,key,value) #下标修改obj[1]=123
pass
def __delitem__(self,key) #下标删除 del obj[1]
pass
#迭代器 1.执行__iter__并获得返回值 2,循环上一步并返回值
def __iter__(self):
return iter([1,2,3,4])
obj=Foo()
obj()
#int(对象),自动执行对象的__ini__ 方法
#int(obj)
print(obj) #执行str(obj) 调用__str__方法