温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

python定义属性时需要注意哪些细节

发布时间:2021-11-25 11:00:42 来源:亿速云 阅读:124 作者:iii 栏目:互联网科技

本篇内容主要讲解“python定义属性时需要注意哪些细节”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python定义属性时需要注意哪些细节”吧!

面向对象编程时定义属性需要注意:有些属性是初始化实例时根据参数来定,而有些属性可根据其它属性推导,注意不要把这种可推导的属性把__init__函数中。正确的做法是将可推导的属性定义成函数,另通过@property将函数伪装成属性。

案例,定义圆形类,该圆形有半径、周长、面积这3个属性。

错误的案例

class Circle():  # 定义圆形对象def __init__(self, radius):  # 实例初始化时需要参数——半径self.radius = radius
        self.perimeter = 2*3.1415926535*self.radius
        self.area = 3.1415926535*self.radius**2a_Circle = Circle(5)print(f'圆的半径是{a_Circle.radius},它的面积是{a_Circle.area:.2f},它的周长是{a_Circle.perimeter:.2f}')a_Circle.radius = 10print(f'圆的半径是{a_Circle.radius},它的面积是{a_Circle.area:.2f},它的周长是{a_Circle.perimeter:.2f}')out:圆的半径是5,它的面积是78.54,它的周长是31.42圆的半径是10,它的面积是78.54,它的周长是31.42

在上述案例中定义了一个圆形类,它有半径、周长、面积3个属性,定义的时候好像没有问题,可是初始化以后会发现问题。

圆的半径是5时,打印它的半径、面积、周长时毫无问题,但是改变当改变该圆的半径值时,面积和周长并未更新!

正确的案例

class Circle():  # 定义圆形对象def __init__(self, radius):  # 实例初始化时需要参数——半径self.radius = radius

    @propertydef perimeter(self):  # 圆的周长return 2*3.1415926535*self.radius

    @propertydef area(self):  # 圆的半径return 3.1415926535*self.radius**2a_Circle = Circle(5)print(f'圆的半径是{a_Circle.radius},它的面积是{a_Circle.area:.2f},它的周长是{a_Circle.perimeter:.2f}')a_Circle.radius = 10print(f'圆的半径是{a_Circle.radius},它的面积是{a_Circle.area:.2f},它的周长是{a_Circle.perimeter:.2f}')out:圆的半径是5,它的面积是78.54,它的周长是31.42圆的半径是10,它的面积是314.16,它的周长是62.83

在上述案例中定义了一个圆形类,它有半径一个属性,周长和面积是根据半径计算出结果的函数,在函数前加@property可将函数伪装成属性。

圆的半径是5时,打印它的半径、面积、周长时毫无问题;改变当改变该圆的半径值时,面积和周长同步更新!

到此,相信大家对“python定义属性时需要注意哪些细节”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI