Python_面向对象之静态方法、类方法与属性方法

1、静态方法
只是名义上的归类管理, 实际上在静态方法访问不了类或实例中的任何属性
2、类方法:
类方法只能访问类变量,不能访问实例变量
3、属性方法:
把一个方法变成一个静态属性

4、静态方法实例:

# Author : XueFeng

class Dog(object):
    '''
    这个类是描述狗的
    '''
    n = 333
    def __init__(self, name):
        self.name = name
        self.__food = None

    # @staticmethod
    # @classmethod
    @property
    def eat(self):
        print("%s is eating %s" % (self.n, self.__food))

    @eat.setter
    def eat(self, food):
        print("set eat:", food)
        self.__food = food

    @eat.deleter
    def eat(self):
        del self.__food
        print("Have deleted...")

    def talk(self):
        print("%s is talking" % self.name)

print(Dog.__doc__)

d = Dog("Tom")
d.eat
d.eat = "baozi"
d.eat
del d.eat
# d.eat

d.talk()

5、属性方法之案例一

# Author : XueFeng


class Dog(object):
    '''
    这个类是描述狗的
    '''
    n = 333
    def __init__(self, name):
        self.name = name
        self.__food = None

    # @staticmethod
    # @classmethod
    @property
    def eat(self):
        print("%s is eating %s" % (self.n, self.__food))

    @eat.setter
    def eat(self, food):
        print("set eat:", food)
        self.__food = food

    @eat.deleter
    def eat(self):
        del self.__food
        print("Have deleted...")

    def talk(self):
        print("%s is talking" % self.name)

    def __call__(self, *args, **kwargs):
        print("Running call", args, kwargs)

    def __str__(self):
        return "hello"


# Dog("jim")()
jim = Dog("Jim")
# jim()
print(jim.__dict__)     # 输出所有的实例属性
print(Dog.__dict__)     # 输出所有的类属性,方法

# 如果一个类中定义了__str__方法,那么在打印对象时,默认输出该方法的返回值

# 打印类的描述信息
# print(Dog.__doc__)

# d = Dog("Tom")
# d.eat
# d.eat = "baozi"
# d.eat
# del d.eat
# # d.eat
#
# d.talk()

6、属性方法之案例二

# Author : XueFeng

class Flight(object):
    def __init__(self, name):
        self.flight_name = name

    def checking_status(self):
        print("Checking flight %s status" % self.flight_name)
        return 1

    @property
    def flight_status(self):
        status = self.checking_status()
        if status == 0:
            print("Flight got conceled...")
        elif status == 1:
            print("Flight is arrived...")
        elif status == 2:
            print("Flight has departured already...")
        else:
            print("Cannot confirm the flight status...")

    @flight_status.setter
    def flight_status(self,status):
        print("flight %s has changed status to %s " % (self.flight_name, status))

f = Flight("CA980")
f.flight_status
f.flight_status = 2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值