对象;;__init__是类的专有方法,每当根据类创建新实例时,Python都会自动运行__init__。
这是一个初始化手段,Python中的__init__方法用于初始化类的实例对象。创建对象的示例代码如下。;;删除对象时,同样会默认调用一个方法,这个方法为析构方法。__del__也是类的专有方法,当使用del语句删除对象时,会调用__del__本身的析构函数。
当对象在某个作用域中调用完毕,跳出其作用域时,析构函数也会被调用一次,目的是释放内存空间。使用__del__方法删除对象的具体示例代码如下。;classAnimal:
...#构造方法
...def__init__(self):
...print(---构造方法被调用---)
...#析构方法
...def__del__(self):
...print(---析构方法被调用---)
cat=Animal()
---构造方法被调用---
;;学习了类的定义过程和方法后,可以尝试创建具体的对象来进一步学习面向对象程序设计。
创建对象的示例代码如下。;对象的属性和方法;对象的属性和方法;对象属性由类的每个实例对象拥有。因此每个对象有自己对这个域的一份备份,即它们不是共享的。在同一个类的不同实例对象中,即使对象的属性有相同的名称,也互不相关。
对于类属性和对象属性,如果在类方法中引用某个属性,那么该属性必定是类属性。
要修改类属性,如果在类外,那么可以通过类对象修改;如果在类里面,那么只能在类方法中进行修改。;对象方法和类的方法是一样的。在定义类的方法时,程序没有为类的方法分配内存,只有在创建具体实例对象时,程序才会为对象的每个数据属性和方法分配内存。
类的方法是由def关键字定义的,具体定义格式与普通函数的定义格式相似,只是类的方法的第一个参数需要是self参数。用普通函数可以实现对对象方法的引用,示例代码如下。;如果要获取上述代码中对象的数据属性,并不需要通过sleep、eat等函数,直接在程序外部调用数据属性即可,示例代码如下。;尽管直接调用的方法很方便,但是破坏了类的封装性,这是因为对象的状态对于类外部而言应该是不可访问的。为防止程序开发人员在无意中修改对象的状态,需要对类的数据属性和方???进行私有化。
Python提供了方法以达到私有化的目的。为了让方法的数据属性或方法变为私有,只需要在属性或方法的名字前面加上双下画线即可,修改前文创建的Cat类代码的示例如下。;3.私有化;3.私有化;在程序外部直接访问私有化属性是不允许的,只能通过设置好的接口函数去调取对象的信息。
通过双下画线实现的私有化其实是“伪私有化”,实际上还是可以从外部访问这些私有化属性,示例代码如下。;;【任务6-2】创建Car对象