类的高级语法:
类的属性:
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. 类方法与类属性属于类,而不属于某个实例