• Python3 面向对象编程高级语法


    1.静态方法:

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    # Author:CarsonLi
    
    class Dog(object):
        def __init__(self,name):
            self.name=name
        """
        静态方法
        只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性
        """
        @staticmethod
        def eat(aaa):
            print(aaa)
    
    d=Dog("小明")
    d.eat("asdfg")
    

      运行结果:

    asdfg
    

    2.类方法:

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    # Author:CarsonLi
    '''
    类方法
        只能访问类变量,不能访问实例变量
    '''
    
    class Dog(object):
        '''
        类方法
            只能访问类变量,不能访问实例变量
        '''
        addr = "深圳"
        def __init__(self,name):
            self.name=name
    
        @classmethod
        def eat(self,age):
            print(self.addr,age)
    
    d=Dog("小明")
    d.eat(25)
    

     运行结果:

    深圳 25
    

    3.属性方法:

      属性方法设置参数和删除参数的函数名可以和该参数名一样,也可以不一样

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    # Author:CarsonLi
    """
    属性方法
        把一个方法变成一个静态属性
    """
    class Car(object):
        def __init__(self,name,logo):
            self.name=name
            self.logo=logo
        """属性方法"""
        @property
        def drop(self):
            print("获取速度%s"%self.sudu)
    
        """为属性方法设置属性,相当于传值"""
        @drop.setter
        def setdrop(self,sudu):
            self.sudu=sudu
            print("设置速度%s"%self.sudu)
    
        """删除属性方法的自己的属性"""
        @drop.deleter
        def deldrop(self):
            del self.sudu
        
        """ 设置属性和删除属性的方法名和属性方法名一致 """
        @property
        def color(self):
            print("%s的颜色为%s"%(self.name,self.colour))
    
        @color.setter
        def color(self,colour):
            self.colour=colour
            print("设置%s的颜色为%s"%(self.name,self.colour))
    
        @color.deleter
        def color(self):
            del self.colour
    
    bmw=Car("华晨马宝宝","BMW")
    #属性方法中属性的设置   触发@drop.setter
    bmw.setdrop="180"   #运行结果:当前速度是180
    #属性方法的调用不用括号
    bmw.drop   #运行结果:180千米每小时
    #触发 @drop.deleter
    del bmw.deldrop
    
    
    bmw.color="blue"  #运行结果:设置华晨马宝宝的颜色为blue
    bmw.color   #运行结果:华晨马宝宝的颜色为blue
    del bmw.color
    

      

  • 相关阅读:
    poj1363Rails(栈模拟)
    centos6.5设备mysql5.6
    SGU326Perspective(网络流量的最大流量)(经典赛车模型)
    扩大或缩小undo表空间
    Boost源代码学习---shared_ptr.hpp
    leetcode
    为客户打造RAC-DG一些遇到的问题汇总
    十归并排序有用的算法和二进制搜索的基础
    Delphi TNativeXML Node节点乱码的一种解决方法
    Delphi TcxTreeList 读取 TcxImageComboBoxItem类型的值
  • 原文地址:https://www.cnblogs.com/bert227/p/9629355.html
Copyright © 2020-2023  润新知