Logo

郎哥编程

Python类的属性和方法

2019-04-22 612

在定义类时,经常需要抽象出它的属性,并定义在类的主体中。下面就来介绍与类属性相关的内容。

常量属性

在类中定义的属性有常量属性和成员属性之分。在Java语言中常量属性用final关键字修饰,常量只能赋值一次,在程序中不能修改它的值。在Python语言中没有专门定义常量的方式,通常使用大写变量名表示,仅仅是一种提示效果,实质上还是变量。

例如:

#声明一个圆类
class Circle:
    #声明圆周率
    PI = 3.14;
    #声明半径
r = 1.0;

Circle类中成员属性PI是圆周率,圆周率是一个常量,使用大写字母来声明。

成员属性

成员属性是抽象出来的类属性,成员属性不能直接被外部访问或修改,需要通过get和set方法来访问或修改属性值,成员属性一般声明为私有变量,禁止外部直接访问。

成员属性的作用范围为整个类文件,作用范围就是成员属性的有效工作范围,在整个类文件中,成员属性都可以被访问和使用。

例如:

#声明一个圆类
class Circle:
    #声明圆周率
    PI = 3.14;
    #声明半径
    _r = 1.0;
   
    #声明构造函数
    def __init__(self,r):
        self._r = r;
   
    #声明设置半径的方法
    def setRadius(self,r):
        self._r = r;
    #声明获取半径的方法
    def getRadius(self,r):
        return self._r;

Circle类有两个成员属性,分别是PI(圆周率)、_r(半径),PI属性被修饰为常量,_r被修饰为私有变量,禁止外部访问和修改。外部如果要访问和修改_r属性,需要调用类提供的getRadius()和setRadius()方法,如getRadius()方法可以获取_r属性的值,setRadius()方法可以设置_r属性的值。属性的初始化可以通过类的构造方法来实现。

成员属性是类所表述事物的共同特征,成员属性一般不能被外部直接访问和修改,必须通过类提供的get和set方法访问和修改成员属性。在类中除成员属性外使用的变量都是临时变量,临时变量一般用于类内部存储临时数据使用,不需要提供get和set方法。

在封装一个类时,不仅要给出类的属性,还要给出类的方法。下面主要介绍如何封装类的方法。

类方法是类行为的抽象,如同类属性是类特征的抽象。类方法是由多条语句组成的语句块,并完成类的某一项功能,类方法使用def关键字修饰。类方法的声明语法如下:

def method:

      语句块;

其中def是声明方法的关键字,method是要声明的方法名称,语句块另起一行书写。例如在声明的Circle类中,getRadius()和setRadius()都是类方法。__init__是类的构造方法,是类提供的一个特殊方法,当Python解释器把类实例化为对象时,它首先为要创建的对象分配内存空间,然后调用类的构造方法初始化类成员属性,最后返回对象实例的引用给声明的对象变量。

在前面Circle类的基础上,下面的代码添加了计算圆面积的方法。

#声明一个圆类
class Circle:
    #声明圆周率
    PI = 3.14;
    #声明半径
    _r = 1.0;
   
    #声明构造函数
    def __init__(self,r):
        self._r = r;
   
    #声明设置半径的方法
    def setRadius(self,r):
        self._r = r;
    #声明获取半径的方法
    def getRadius(self,r):
        return self._r;
    def Area(self):
        return self.PI * self._r * self._r;
   
#实例化Circle对象
circle = Circle(16.5);
print("圆的面积为:%s" % (circle.Area()));

Circle类的Area()方法用于计算圆的面积,并将计算结果返回给调用者。


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

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

评论区

登录 后发表评论
暂无评论