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 setkm(self,sudu):
        self.sudu=sudu
        print("设置速度%s"%self.sudu)

    """删除属性方法的自己的属性"""
    @drop.deleter
    def delkm(self):
        del self.sudu

bmw=Car("华晨马宝宝","BMW")
#属性方法中属性的设置   触发@drop.setter
bmw.setkm="180"   #运行结果:当前速度是180
#属性方法的调用不用括号
bmw.drop   #运行结果:180千米每小时
#触发 @drop.deleter
del bmw.delkm 

  

猜你喜欢

转载自www.cnblogs.com/bert227/p/9629355.html