zoukankan      html  css  js  c++  java
  • Python学习笔记-Day20-property、classmethod、staticmethod、isinstance、issubclass

    今日内容

    一、装饰器函数property

    二、classmethod和staticmethod

    三、isinstance和issunclass

    一、装饰器函数property

    property是一个装饰器函数,可以将一个方法伪装成属性

    当一个方法被伪装成属性后,可以执行一个属性的增删改查(通过@方法名.setter和@方法名.deleter,下面的函数名一定要和方法名一样)

    class Student:
        def __init__(self, name):
            self.__name = name
        @property
        def name(self):
            return self.__name
        @name.setter
        def name(self, new):  # 必须传入一个参数,
            if type(new)is str:
                self.__name = new
        @name.deleter
        def name(self):
            print('111')
    ming = Student('小明')
    print(ming.__dict__)  # {'_Student__name':'小明'}
    ming.name = '小红'
    print(ming.__dict__)  # {'_Student__name':'小红'}
    ming.name = 123
    print(ming.__dict__)  # 修改不成功,还是{'_Student__name':'小红'}
    del ming.name  # 打印了111

    二、classmethod和staticmethod

    1、classmethod:类方法,只使用类中的资源(方法与self无关),且这个西元可以通过类名引用进行使用,那么这个方法应该被改为类方法

    例如:修改商品的折扣不需要通过对象

    class Goods:
        __discount = 0.8
        def __init__(self,name,price):
            self.name = name
            self.__price = price
        @property
        def price(self):
            return self.__price * Goods.__discount
        @classmethod
        def change_discount(cls,new):
            cls.__discount = new
    apple = Goods('apple',10)
    banana = Goods('banana',20)
    print(apple.price)  # 8.0
    Goods.change_discount(0.7)
    print(apple.price)  # 7.0
    print(banana.price)  #14.0

    2、staticmethod

    在某些程序中,要求全部用面向对象,则普通的函数(不需要self和cls)也要定义在类里。这时可以用 @staticmethod。也叫静态方法,静态方法可以没有默认参数,其他方法有self或cls默认参数

    例如选课系统中,学生类的登录问题

    class Student:
        @staticmethod
        def login():
            pass
    Student.login()

    总结:

    类:

      静态属性:类,所有对象都统一拥有的属性

      类方法:类,如果方法涉及到操作类方法、静态属性、静态方法,那么这个方法要被改为类方法,就是在方法上加上@classmethod,有默认参数cls

      静态方法:普通方法,不使用类命名空间和对象命名空间,就是一个普通函数,定义时在函数前一行加上@ staticmethod,可以没有默认参数

      方法:对象,有默认参数self

      property方法:对象,有默认参数self

  • 相关阅读:
    产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。
    it人必进的几大网站
    可写可选dropdownlist(只测试过ie)
    Datatable转换为Json 的方法
    ref 和out的区别
    数据库事务
    Webservice 的安全策略
    【转】Zookeeper解析、安装、配置
    【转】activemq的几种基本通信方式总结
    【转】Java小应用:Eclipse中建立自己的类库,给不同的工程使用
  • 原文地址:https://www.cnblogs.com/tian-tian/p/9562447.html
Copyright © 2011-2022 走看看