类的定义:
类是用来描述具有相同的属性和方法的对象的集合。它定义了该集合中的每个对象所共有的属性和方法。对象时类的实例。
二、Python创建类:
使用class语句来创建一个新类,class之后为类的名称并以冒号结尾,类的组成包括成员变量和成员函数。
三、Python构造函数和析构函数:
1.__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法。
2.__del__(),被称为类的析构函数,__del__()在对象消逝的时候被调用,当对象不再被使用时,__del__()方法运行
四、Python创建实例对象
要创建一个类的实例,可以使用类的名称,并通过__init__方法接受参数
可以使用点(.)来访问对象的属性
类的文档字符串可以通过ClassName.__doc__查看
count是类属性,所以可以直接用类名.类属性来调用
类方法也可以使用类名.类方法来调用,eg:User().类方法名称
五、Python内置类属性
__doc__:类的文档字符创
__name__:类名
__module__:类定义所在的模块(类的全名是'__main__.className',如果累位于一个导入模块mymod中,那么className.__module__等于mymod)
__bases__:类的所有父类构成元素(包含了一个由所有父类组成的元组)
__dict__:类的属性(包含一个字典,由类的数据属性组成)
六、Python对象销毁(垃圾回收)
1、同Java语言一样,Python使用了引用计数这一简单计数来追踪内存中的对象。
2、垃圾回收机制不仅针对引用计数未0的对象,同样也可以处理循环引用的情况。
上述实例中入执行:del u1,则u1对象被销毁,打印:User destroyed
七、Python类的继承
面向对象的变成带来的主要好处之一就是代码的重用,实现这种重用的方法之一就是通过继承继承机制。
1、声明类的时候括号中写要继承的父类。
2、类的继承衍生出类子类,子类可以继承或重写父类的方法,子类可以自定义新的方法或者成员变量,比如学生类可以继承用户类。
在继承中基类的构造方法不会被自动的调用,它需要再其派生类的构造中专门进行调用,所以要重写构造方法
在调用基类的方法时需要加上基类的类名前缀,且需要带上self参数变量
它的子类也可以定义新的成员变量
重写基类中的方法,同上
注意:
Python总是首先查找本类(对应的子类)中的方法,如果不在派生类中找到对应的方法,它才开始到基类中逐个查找。
(多重继承、嵌套继承)
八、Python类私有属性与方法
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时self.__private_attrs。
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用self.__private_methods
python不允许实例访问私有化的属性:
可以通过object.classname的方式来访问实例的私有属性
print(n._Mycounter__screctCount)
九、Python实例方法、类方法、静态方法
实例方法,类方法,静态方法都是通过实例或者类调用,只不过实例方法通过类调用时需要传递实例的引用(python3可以传递任意对象,其他版本会报错)
实例方法针对的是实例,第一个参数是self,普通对象方法至少需要一个self参数,代表类对象实例;类方法针对的是类,@classmethod它表示接下来是一个类方法,类方法的第一个参数cls,它们都可以继承和重新定义;静态方法用于作为程序中的共享资源,直接通过类去调用,不用实例化对象,不需要self参数,可以认为是全局函数,@staticmethod它表示接下来的是一个静态方法