• 封装


    面向对象之封装

    在什么场景下需要封装

    1.隐藏一个属性 不让类外部调用
    2.保护中国属性 不让被随意修改
    3.保护属性不被子类继承

    class Person():
        def __init__(self,name,age):
            self.name = name
            self.__age = age    #定义为私有属性
        def get_age(self):
            return self.__age
    
    p = Person('judy',18)
    # print(p.__age)  #此处报错,不可以直接调用私有属性
    print(p.get_age())

    与封装有关的三个内置方法

    property

    class Person():
        def __init__(self,name,age):
            self.name = name
            self.__age = age    #定义为私有属性
        @property   #把一个方法伪装成一个属性,不能有self之外不能有其他的参数。调用时 直接调用函数名,不用加()
        def age(self):
            return self.__age
        @age.setter     #给属性设置值
        def age(self,age):
            self.__age = age
        @age.deleter    #删除私有属性age
        def age(self):
            del self.__age
    p = Person('judy',18)
    p.age = 16  #给私有属性age赋值
    print(p.age)    #查看私有属性age
    del p.age   #删除私有属性age
    property

    classmethod:  把一个方法变成类方法,不需要实例化对象,通过类名就可以访问类属性和类方法

    class Goods():
        __discount = 0.6
        def __init__(self,name,price):
            self.__name = name
            self.__price = price
        #定义一个方法修改打折
        @classmethod
        def change_disc(cls,new):
            cls.__discount = new
    Goods.change_disc

    staticmethod :   不需要实例化对象可以直接调用# 完全面向对象的程序中,如果一个函数既和对象 没关系,又和属性没有关系 就用静态方法

    class Person():
        def __init__(self,name,password):
            self.name = name
            self.password = password
        @staticmethod
        def login():
            print('input your name and password')
    Person.login()
  • 相关阅读:
    金盾视频高级加密系统 2016S VIP 注册版 高强度视频加密工具
    Webshell管理+网站后台管理+菜刀
    易 5.2 修正版+破解+完美支持Win8/7
    易5.1破解版+汉语编程
    UltraISOPE 9.6.2.3059简体中文注册版/单文件版+软碟通
    hfs网络文件服务器 2.3
    免费开通二级域名的论坛
    周星驰电影全集+BT种子下载+高清版MKV+周星驰系列电影合集
    DJ音乐盒-专注DJ
    EXE加载皮肤DLL
  • 原文地址:https://www.cnblogs.com/jiangchengcheng/p/9610826.html
Copyright © 2020-2023  润新知