面向对象算是每个面向对象编程语言的难点,但也是最基本需要掌握的知识点。创建一个类有非常的简单,类中包含了类属性、类方法与类的私有属性(私有属性不做记录),以及对象属性与对象方法。
类属性与类方法是属于类的,是指可以直接通过类本身直接就可以调用,而不是通过一个类实例化出一个类对象再去调用的,如图:
上图中的"MyClass"就是一个类,在这类中有一个"name"属性,一个"func"方法,这二者皆属于当前他们所在的这个类,意思就是说可以直接通过"类名.属性名或者方法名()"去掉用,前提是,在定义一个类方法的时候,在这个方法的前面必须加上一个修饰符,就是图中的"@classmethod",意思就是声明下面的这个方法是类方法,并且,必须在这个类方法中添加一个默认参数,就是图中"func(cls)"括号里的"cls",这个默认参数不需要传参,这个"cls"以为当前的类本身。
对象属性与对象方法当然是属于对象的,类不等于对象,但是当类名后面加一个"()"就代表实例化出了一个对象,如图:
与之前相比,同样都是调用了"name"属性与"func"方法,但是在类名后面加上了"()",就说明,已经实例化出来了一个属于"MyClass2"的对象,而这个对象并没有指向一个变量名,而且,在"func"方法后面的括号里已经不是"cls",而是"self",这里需要声明,"cls"与"self"可以随意填写。无论是类方法还是对象方法,都必须在填写一个默认参数,所有的类方法或者对象方法的默认参数必须保持一致,而且类方法的默认参数不能和对象方法的默认参数一样,因为代指的并不相同。对象属性必须通过"__init__(self)"进行初始化与封装(Ps."__init__"属于Python的魔法方法,它的作用就是初始化和封装一个对象的变量,当然还有其他的魔法方法"__str__","__rper__","__del__","__new__"...默认调用父类的,但"__init__"一般都需要进行重写)。
无论类属性与对象属性,类方法与对象方法,这两者存在的区别就是,类可以调用类属性与类方法,对象也可以调用类属性与类方法,相当于,类属性与类方法是公有的。但是反过来,如果通过类名去调用对象的属性与方法就会报错,而类属性与对象属性的区别就是,声明对象属性时,必须按照"self.属性名 = 值"这个形式去声明,并且必须在初始化方法中去声明("__init__"方法);声明类属性时就直接"变量名 = 值"就可以,也不用局限于初始化方法中。同上,类方法与对象方法亦是如此。如图:
今儿到这儿。吃饭吃饭吃饭了
领取专属 10元无门槛券
私享最新 技术干货