zoukankan      html  css  js  c++  java
  • 【python】属性和类方法

    #属性的初识

    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.68,70)

    # print(p1.bmi())

    print(p1.bmi)

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

    P1.bmi = 25 #常规修改属性值会报错

    # 属性的改

    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('帅哥',20)

    print(p1.age) #使用@property 将一个方法伪装成一个属性,否则直接会报错

    p1.age = 23  #使用@方法名.setter 可对伪装后的属性值进行修改 不常用

    print(p1.age)

    del p1.age #使用@方法名.deleter 可对伪装后的属性进行删除 不常用

    2、类方法:

    1、@classmethod  类方法的装饰器,内置函数

    class A:

        def func(self):  # 普通方法

            print(self)

        @classmethod  # 类方法

        def func1(cls):

            print(cls)

    # a1 = A()

    # a1.func()

    # A.func(a1)

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

    A.func1()

    使用场景:

        1,无需对象参与.不用对象命名空间中的内容,用到类命名空间中的变量(静态属性)

        2,对类中的静态变量进行修改.

    使用类方法:

     

     3、静态方法

    -----------------------------------待补充------------------------------

  • 相关阅读:
    输入年月日,输出这一天是这一年的多少天
    判断体重是否标准 男标准=身高-100±3 女标准=身高-110±3
    if 条件运算符
    24小时换算成12小时&&判断正负数
    运算符(编程)
    定义变量
    基础知识
    java线程阻塞中断与LockSupport使用介绍(转)
    01背包问题--动态规划解法(2)(转载)
    01背包问题--动态规划解法
  • 原文地址:https://www.cnblogs.com/xlzhangq/p/13211290.html
Copyright © 2011-2022 走看看