python大作战之介绍类属性、实例属性、类方法、静态方法、实例方法

大家好,今天跟大家再次介绍下类属性、实例属性、类方法、静态方法、实例方法,(主要是小白的我又加深的理解了一下,大神可以飘过,哈哈),直接上代码:

class Animal(object):
    color='蓝色'#这里就是类属性,也可以定义为全局变量
    def __init__(self,name,age):
        global color#这个global方法就是类似共享全局变量的含义
        self.name=name
        self.age=age
    @classmethod#被classmethod装饰的是类方法,能被类对象和实例对象同时调用
    def test(self):
        print('这是test函数')
    def test1(self):#这是Animal类的实例方法,只能被实例对象调用
        print('这是test1函数')
    @staticmethod
    def test2():#当Animal类的实例方法被staticmethod修饰时,那么这个实例方法使用的前提:表示既不需要使用实例对象,也不需要使用类对象
        print('这是test3函数')
    def color_fjh(self):
        print('这个颜色是{}'.format(self.color))
a=Animal('拉布拉多',2)
print('实例对象属性为:{}'.format(a.name))
print('实例对象属性为:{}'.format(a.age))
print('类属性为:{}'.format(Animal.color))
print(a.color)
a.test()
try:
    Animal.test()#如果类对象想要调用,那么需要将Animal类中的实例方法test被classmethod修饰
except TypeError as e:
    print('类对象不能调类方法吗?')
a.color='粉色'#赋值给实例对象的方法,在不定义global前提下,是不能改变类属性的,只是间接的增加了一个实例属性
print(a.color)
print(Animal.color)
#可以使用实例对象和类对象同时调用被staticmethod修饰的静态方法
a.test2()
Animal.test2()
a.color_fjh()

运行结果:

实例对象属性为:拉布拉多
实例对象属性为:2
类属性为:蓝色
蓝色
这是test函数
这是test函数
粉色
蓝色
这是test3函数
这是test3函数
这个颜色是粉色

最后一个为什么输出粉色,因为对象做了一个增加实例属性的操作

    原文作者:西欧伯爵
    原文地址: https://blog.csdn.net/qq_29053519/article/details/89972324
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞