• Python_day20(2018.7.27)_(属性,类方法,静态方法)


    今日主要内容

    01 属性

    属性: 将方法伪装成一个属性,代码上没有什么提升,只是更合理.
    @property ***
    @属性名.setter **
    @属性名.deleter *

    02 类方法
    @classmethod
    只能有类名调用(对象调用,传给cls参数的也是该对象的所属类).
    使用场景:
    1,无需对象参与.
    2,对类中的静态变量进行修改.
    3,在父类中类方法得到子类的类空间,为所欲为.

    03 静态方法
    @staticmethod
    # 1,代码块.清晰.
    # 2,复用性.

    01 属性

    概念: 将一个方法  伪装成一个 属性,在代码的级别上没有本质的提升,但是让其看起来跟合理.

    # --------------康琛练习-------------------
    # class Person:
    # def __init__(self, name, hight, weight):
    # self.name = name
    # self.__hight = hight
    # self.__weight = weight
    #
    # @property
    # def bmi(self):
    # return '%s 的bmi 值%s' % (self.name, self.__weight / self.__hight ** 2)
    #
    #
    # p1 = Person("宝宝", 1.6, 52)
    # print(p1.bmi)
    # print(p1.__dict__)
    #
    # # # 属性 : 将一个方法 伪装成一个 属性,在代码的级别上没有本质的提升,但是让其看起来跟合理.
    # print(p1.name)
    # p1.name = 'alex'
    # print(p1.name)


    ------------------属性的 改 和 删除---------------------

    class Person:
    def __init__(self,name,age):
    self.name = name
    if type(age) is int:
    self.__age = age
    else:
    print("输入的年龄类型有误,请输入数字")
    @property
    def age(self):
    return self.__age
    @age.setter
    def age(self,a1):
    if type(a1) is int:
    self.__age = a1
    else:
    print("你输入的年龄类型有误,请输入数字")
    @age.deleter
    def age(self):
    del self.__age
    p1 = Person("宝宝",18)
    print(p1.age)
    p1.age = 20 #利用 @age.setter 对实例化的对象进行静态变量进行修改 p1.age = 20
    print(p1.age) #利用@property 函数是方法age伪装成是Person 的一个静态变量.
    del p1.age
    print(p1.__dict__)


    -----------------------类方法,静态方法---------------
    @classmethod
    只能有类名调用(对象调用,传给cls参数的也是该对象的所属类).
    使用场景:
    1,无需对象参与.
    2,对类中的静态变量进行修改.
    3,在父类中类方法得到子类的类空间,为所欲为.

    # --------------康琛练习------------------
    # class A:
    # def func(self):
    # print(self)
    # @classmethod
    # def func1(cls):
    # print(cls)
    # a1 = A() #实例化一个A的对象
    # a1.func() #让实例化出来的对象 a1 调用类中的类方法func1,会自动将类的空间传递给func1(cls)的参数cls
    # A.func(a1) #让实例化出来的对象直接调用父类中的方法func1()

    # 类方法: 通过类名调用的方法,类方法中第一个参数约定俗称cls,python自动将类名(类空间)传给cls.
    # A.func1()

    # a1 = A()
    # a1.func1() # 对象调用类方法,cls 得到的是类本身.


    #类对象方法
    # ---------------康琛练习__类对象方法---------------
    # class A1:
    # name = "alex"
    # count = 1
    # @classmethod
    # def func1(cls):
    # return cls.name + str(cls.count + 1)
    # print(A1.func1()) #无需实例化对象,就可以直接调用类中的类方法.



    ----------------------------静态方法------------------------
    # 静态方法:
    # class A:
    #
    # @staticmethod
    # def login(username, password):
    # if username == 'alex' and password == 123:
    # print('登录成功')
    # else:
    # print('登录失败...')
    #
    #
    # A.login('alex',1234)

    # def login(username,password):
    # if username == 'alex' and password == 123:
    # print('登录成功')
    # else:
    # print('登录失败...')
    #
    # login('alex',1234)

    静态方法的特征:

    # 1,代码块.清晰.
    # 2,复用性.
















  • 相关阅读:
    [Java] JDBC 06 批Transaction处理 -- conn.setAutoCommit(false); // 不让其自动提交 (很重要的知识点)
    [Java] JDBC 05 TestBatch.java 批处理 Batch
    [Java] JDBC 04 TestProc.java (对存储过程进行调用 CallableStatement)
    [Java] JDBC 03 TestPrepStmt.java
    美化复选框
    美化单选框
    canvas
    html5新增标签
    旋转、水平翻转、垂直翻转
    dede让channelartlist标签支持currentstyle属性 完美解决
  • 原文地址:https://www.cnblogs.com/kcwxx/p/9379257.html
Copyright © 2020-2023  润新知