Logo

郎哥编程

Python类实例化为对象

2019-04-21 1077

前面一节提到类是抽象的概念集合,表示的是一个共性的产物,类中定义了类的属性和方法,而对象是类的实例。

例如前面建立的水果类,水果被归纳为类,而苹果、香蕉、葡萄为水果类的实例或对象。水果是人们赋予具有苹果、香蕉、葡萄等共同特点的名称,不单指某一事物;对象是指具体的实物或概念,如苹果、香蕉、葡萄等对象是实物,而一项政策可能就是一个概念性的对象了,在现实生活中,万事万物皆对象,面向对象编程就是模拟现实生活中的一个个对象来编程的。

类也可以看做是对象的模板,它描述一类对象的行为和状态,决定着对象的属性和方法。由对象可以抽象出类,类也可以实例化成对象,就像水果类决定了苹果、香蕉、葡萄等对象具备糖分、汁液、芳香度都基本特征,也可以通过抽取香蕉、葡萄等对象的共同特征抽象为水果类。

image.png       

图 1 水果类与水果对象的关系

 

在图1中,由苹果、葡萄等对象抽象出水果类,水果类属性有water(汁液含量)、sugar(糖分含量)、fragrance(芳香度),这些属性是水果类所具有的共同特点。当在程序中需要使用苹果对象时,需要将水果类实例化苹果,同时初始化苹果对象的water(汁液含量)、sugar(糖分含量)、fragrance(芳香度)属性。

对象的创建

对象是根据类创建的。在Python中,将类实例化为对象非常简单。实例化对象语法如下:

对象名 = 类名();

例如:创建前面Fruits类的苹果对象

apple = Fruits("80%","30%","20%");

水果类实例化苹果对象时,会调用Fruits类的构造方法初始化对象,Fruits类的构造方法要求传入water(汁液含量)、sugar(糖分含量)、fragrance(芳香度)三个属性值,初始化对象的属性。

Fruits类的构造方法代码如下:

def __init__(self, inwater, insugar,infragrance):
        self.water = inwater;
        self.sugar = insugar;
    self.fragrance = infragrance;

其中,self表示类实例(对象)本身,在创建实例的时候self不需要传入,Python解释器会自己把实例变量传进去。

访问对象的属性和方法

访问对象中封装好的属性和方法是通过“.”操作符进行的。例如:

#实例化苹果对象       
apple = Fruits("80%","30%","20%");
#输出苹果对象属性
print("汁液含量:%s" % (apple.getWater()));
print("糖分含量:%s" % (apple.getSugar()));
print("芳香度:%s" % (apple.getFragrance()));

例1:创建一个Fruits水果类,并实例化Fruits类为apple对象,然后调用Fruits类的showFruit()方法输出Fruits对象的属性。

#定义水果类
class Fruits:
    #水果类汁液含量属性
    water = "";
    #水果类糖分含量属性
    sugar= "";
    #水果类芳香度属性
    fragrance = "";
    #水果类构造方法(函数)
    def __init__(self, inwater, insugar,infragrance):
        self.water = inwater;
        self.sugar = insugar;
        self.fragrance = infragrance;
   
    def getWater(self):
        return self.water;
    def getSugar(self):
        return self.sugar;
    def getFragrance(self):
        return self.fragrance;
   
    def setWatet(self,inwater):
        self.water = inwater;
    def setSugar(self,insugar):
        self.sugar = insugar;
    def setFragrance(self,infragrance):
        self.fragrance = infragrance;
    def showFruit(self):
        print("汁液含量:%s" % (self.water));
        print("糖分含量:%s" % (self.sugar));
        print("芳香度:%s" % (self.fragrance));
 
#实例化苹果对象       
apple = Fruits("80%","30%","20%");
#调用showFruit输出苹果对象属性
apple.showFruit();

上面的代码声明了Fruits类。Fruits类有汁液含量(water)、糖分含量(sugar)和芳香度(fragrance)类属性,并提供了类属性的设置或获取方法,也提供了showFruit方法,该方法使用print语句输出类的属性。

在类的声明后面,使用Fruits类实例化apple对象,在类的实例化过程中,会调用Fruits类的构造方法,并传入初始化对象属性的参数,最后调用apple对象的showFruit()方法输出对象属性。

Python对象是Python类的实例化,Python类的实例化就是在代码中声明一个类型为Python类的变量,然后调用类的构造方法申请Python类的存储空间并初始化Python类的属性,被初始化的Python类赋值给前面已声明的变量,该变量即为Python类的实例化对象。

 


代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论