zoukankan      html  css  js  c++  java
  • 面向对象基础(四)

    # 封装中的属性
    # 一个人是否健康可以通过bmi值来判断
    
    class Person:
        def __init__(self,name,height,weight):
            self.name = name
            self.height = height
            self.weight = weight
    
        def bmi(self):
            return '{name}的bmi值为{date}'.format(name = self.name,date = round(self.weight / self.height ** 2,1))
    
    p1 = Person('Tian',1.70,60)
    print(p1.bmi())
    
    # 这里bmi是一个名词一个属性的概念,这样调用是非常不符合规则的
    class Person:
        def __init__(self,name,height,weight):
            self.name = name
            self.height = height
            self.weight = weight
        # 加上装饰器之后bmi方法就成为了属性方法
        @property
        def bmi(self):
            return '{name}的bmi值为{date}'.format(name = self.name,date = round(self.weight / self.height ** 2,1))
    
    p1 = Person('Tian',1.70,60)
    print(p1.bmi)
    # 属性是可以更改的但是这里我们是一个伪装的属性所以无法更改,对此python中还有一些其他的装饰器
    class Person:
        def __init__(self,name,height,weight):
            self.name = name
            self.height = height
            self.weight = weight
            self.__bmi = round(self.weight / self.height ** 2, 1)
        @property
        def bmi(self):
            return '{name}的bmi值为{date}'.format(name = self.name,date = self.__bmi)
    
        @bmi.setter
        def bmi(self,num):
            self.__bmi = num
    
        @bmi.deleter
        def bmi(self):
            del self.__bmi
    p1 = Person('Tian',1.70,60)
    p1.bmi = 10
    print(p1.bmi)
    del p1.bmi
    # 这样就可以修改了,当然这种写法是不规范的没人会在构造函数做计算,这里只是以此举例
    # 类方法
    class A:
        count = 20
    
        @classmethod
        def cal(cls,num):
            return num + cls.count
    
    # 这一类无需对象参与的的方法可以用类方法
    print(A.cal(15))
    
    
    
    # 父类要获取派生类也可以用类方法
    class B(A):
        count = 30
    print(B.cal(15))
    # 类中的静态方法
    
    class A:
        @staticmethod
        def func(user,pwd):
            if user == 'Tian' and pwd == 666:
                print('success')
            else:
                print('error')
    
    
    A.func('Tian',666)
    
    # 增加代码的复用性
    # 使代码块更加整洁明了
  • 相关阅读:
    MySQL 卸载
    Mysql(压缩包)下载与安装
    sqlserver一次性修改多条
    mysql一些操作
    SQL函数集合
    js时间转换相关
    easyui grid中翻页多选方法
    easyui combobox筛选(拼音)
    wpf图片切换,幻灯效果
    openfire搭建IM
  • 原文地址:https://www.cnblogs.com/tengx/p/11888431.html
Copyright © 2011-2022 走看看