zoukankan      html  css  js  c++  java
  • Python合集之面向对象(四)

    1.访问限制

    在类的内部可以定义属性和方法,而在类的外部则可以直接调用属性或方法来操作数据,从而隐藏了内部的复杂逻辑。但是PYthon并没有对属性和方法的访问权限进行限制。为了保证类内部的某些属性或方法不被外部所访问,可以在属性或者方法名前面添加双下划线,或者首尾加双下划线,从而限制访问权限。其中,双下划线,首尾双下划线的作用如下:

    a.首尾双下划线表示定义特殊方法,一般是系统定义名字,如:__init__()

    b.双下划线表示private类型的成员,只允许定义该方法的类本身进行访问,而且也不不能通过类的实例进行访问,但是可以通过类的实例名.__类名__XXX方式访问。

    例如:

    class Swan:
        '''天鹅类'''
        __neck__swan='天鹅的脖子很长'
        def __init__(self):
            print('__init__():',Swan.__neck__swan)
    swan=Swan()
    print("加入类名:",swan.Swan__neck__swan)

    2.创建用于计算的属性

    在Python中,可以通过@property将一个方法转换为属性,从而实现用于计算的属性。将方法转换为属性后,可以直接通过方法名来访问方法,而不需要在添加一对小括号,这样可以让代码更加简洁,语法格式如下:

    @property
    def methodname(self):
        block
    参数说明:
    methodname:用于指定方法名,一般使用小写字母开头,该名称最后将作为创建的属性名。
    self:必要参数,表示类的实例
    block:方法体,实现具体功能,在方法体重,通常已return语句结束,用于返回计算结果。

    例如:

    class Rect:
        def __init__(self,width,height):
            self.width=width
            self.height=height
        @property
        def area(self):
            return self.width*self.height
    rect=Rect(800,600)
    print("面积为:"rect.area)

    注:通过@property转换后的属性不能重新赋值,如果对其重新赋值,将抛出异常。

    3.为属性添加安全保护机制

    在Python那种,默认情况下,创建类的属性或者实例是可以在类体外进行修改的,如果想要限制其不能在类的体外修改,可以将其设置为私有的,但是设置为私有后,在类的体外不能直接通过实例名+属性名获取他的值,如果想要创建一个可以读取但不能修改的属性,那么可以使用@property实现只读属性。

    例如:

    class TVshow:
        def __init__(self,show):
            self.__show=show
        @protery
        def show(self):
            return self.__show
    tvshow=TVshow("正在播放《战狼2》")
    print("默认:",tvshow.show)

    花絮:

    本期的Python 面向对象就分享到这里,下期我们将继续分享Python面向对象的相关知识,感兴趣的朋友可以关注我。

    同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

  • 相关阅读:
    倒计时发送短信案例
    倒计时效果
    setInterval 定时器
    setTimeout定时器
    调整窗口大小事件
    window常见事件onload
    模拟京东快递单号查询
    模拟京东按键输入内容
    跟随鼠标的天使案例
    Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)
  • 原文地址:https://www.cnblogs.com/a-mumu/p/14615283.html
Copyright © 2011-2022 走看看