python高级玩法,类的的基本概念和封包以及装饰器

类的基本概念和隐藏玩法

  • 什么是类???
    • 类的基本概念
  • 什么是类的封装的和隐藏,以及装饰器
    • 类的封装和隐藏
    • 类的装饰器@property,@name.setter

什么是类???

类的基本概念

  • 对于初学者也许会有一个类的概念或者并不太了解,那么由我在这里讲解一下。
  • 类这种东西就像是把现实里的东西抽象化,我更认为是把函数(def)和变量(a=数据)之类的联合到一起,函数就是你定义的方法,变量就是你定义方法或者某个东西的属性,总之也是二者结合。
#这里我先给大家举个例子
class acc:    #我们先随意定义一个类
    neam = "乔碧罗"     #该类中的默认属性为乔碧罗

    def fn(self):   #seif是一个默认传参,也算是类中自带的一个方法吧,当然你也可以改成其他的但是第一个参数必须是默认的。
        print('我是%s'%self.neam)     #然后这个方法是输出我是谁谁谁。
a1 = acc()   #我们建立一个实类
print(a1.neam)              #然后把实类打印一下
a1.fn()       #使用方法传输实类
a2 = acc()
a2.neam = '菜虚坤'    #这些实类也是可以改变的,最好还是新建一个实类去改变
print(a2.neam)
a2.fn()           #改变之后使用方法传输实类
>>>乔碧罗   #直接输出属性
>>>我是乔碧罗  #输出方法
>>>菜虚坤   #第二个实类的属性
>>>我是菜虚坤    #第二个实类的方法

什么是类的封装的和隐藏,以及装饰器

类的封装和隐藏

  • 我们可以通过实类加上变量名或者方法(函数),来直接修改类的属性值,但是如果不行让其他人修改该怎么办呢,那么我就可以增加方法或者改变了名来增加难度,以及一些特殊的方法来隐藏类。
class acc:
   #__init__这种也是类里的一些特殊方法,不同的函数名不同的方法,有兴趣的小伙子可以查一下关于类的函数命特殊方法。
   #__init__这个方法可以直接在函数写上自己想要直接添加的属性并且在写类的时候直接添加,比如a1 = acc('name')这种
    def __init__(self,name):   #这里写上我们想要直接添加的属性
        self.__name=name     #添加类里属性之后直接赋值给__name
    def fn(self):
        print('我是%s'%self.__name)   #在方法里直接调取给类赋值之后的__name

a1 = acc('菜虚坤')     #向类里的name赋值
a2 = acc('乔碧罗')
a1.fn()     #调取赋值name之后的方法
a2.fn()
>>>我是菜虚坤
>>>我是乔碧罗

类的装饰器@property,@name.setter

  • @property可以将原本的方法变成属性,@name.setter可以将原本的属性变成方法。
class acc:
    def __init__(self,name):
        self.__name=name

    @property    #在要改变的方法上面添加一个@property就可以使方法变成属性
    def fn1(self):
        print('我是%s'%self.__name)
    @fn1.setter    #前面我们已经把方法变成了属性,这这里在把属性变成方法,属性名加上setter就可以。
    def fn1(self,fn1):
        self.__name=fn1

a1 = acc('菜虚坤')

a1.fn1    #直接调用属性名

a1.fn1 = '乔碧罗'    #输入我们要使用方法的变量名
a1.fn1
  • 有了这些我们就可以自己写库了,哪怕给别人看也不会被别人发现,一定要分清方法是方法属性是属性,改变之后就要使用对应的调取方法。
  • 还要之前提过的__name在变量名字前面加上__就可以让别人不能直接调用,虽然是隐藏但是实际的变量名变成了类名_类名__属性名,比如_Person__name,也可以加上单一的下划线只是告诉别人不要动不能改变量名,不过也都是只防君子不防小人罢了。
    一个努力自学的博主,欢迎点赞关注加收藏

python高级玩法,类的的基本概念和封包以及装饰器_第1张图片

你可能感兴趣的:(python高级玩法,类的的基本概念和封包以及装饰器)