Python进阶高级语法之类的高级语法,类方法、静态方法、实例方法!

21 篇文章 0 订阅
20 篇文章 0 订阅

 类的高级语法:

类的属性:

class Enemy:
    hp = 0
    count = 0
    def run(self):
        pass

print(Enemy.count)
enemy = Enemy()
print(enemy.hp)
print(enemy.count)
Enemy.count = 100
print(enemy.count)
enemy2 = Enemy()
print(enemy2.count)

 类的实例属性:

class Person:
    def __init__(self):
        self.name = '昵称'

person = Person()
print(person.name)

类方法、静态方法、实例方法:

class Enemy:
    def run(self):
        print('实例方法')

    @staticmethod
    def introduce():
        print('静态方法')

    @classmethod
    def class_info(cls):
        print('类方法')
        print(cls.__mro__)

Enemy.introduce()
Enemy.class_info()

对于类:

1. 类可以直接访问类属性
2. 类不可以直接访问实例方法,必须通过实例化之后的对象来访问实例方法

3. 类不可以访问对象特有的属性(比如:def __init__中定义的属性)
4. 类可以直接访问类方法
5. 类可以直接访问静态方法

如果对象中的属性跟类中的属性相同,改变对象中的属性值,不会影响类中的属性值

对于对象:

1. 对象可以直接访问类的属性(实例化过程中,类已经将属性赋给对象)
2. 对象可以直接访问自己私有的属性,类的内部。
3. 对象可以直接访问类方法
4. 对象可以直接访问静态方法
5. 对象可以直接访问实例方法

class Enemy:

    def run(self):
        print('实例方法')

    @staticmethod
    def introduce():
        print('静态方法')

    @classmethod
    def class_info(cls):
        print('类方法')
        print(cls.__mro__)

enemy = Enemy()
enemy.class_info()
enemy.introduce()

为什么要使用类属性、类方法 :

1. 为了减少多个类实例所产生的内存空间 
2. 类方法与类属性属于类,而不属于某个实例 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值