3.1 学Python 类

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__方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值