python高级语法知识整理

类的高级语法

类的属性

lass Role:
    hp = 0 #类属性

    def __init__(self, hp):#self.hp 成员属性
        self.hp = hp

print(Role.hp)

role = Role(100)
print(role.hp)

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

class Student:

    def read(self):
        print('read')

    @staticmethod
    def introduce():
        print('static method')

    @classmethod
    def class_info(cls):
        print(cls.__name__)

# student = Student()
# student.read() #实例方法调用


# Student.introduce() #静态方法调用

Student.class_info()  #类方法调用

对于类:

1.类可以直接访问类属性

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

3.类不可以访问对象特有的属性(比如:def __init__中定义的属性)

4.类可以直接访问类方法

5.类可以直接访问静态方法

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

对于对象:

1.对象可以直接访问类的属性(实例化过程中,类已经将属性赋给对象)

2.对象可以直接访问自己私有的属性,类的内部。

3.对象可以直接访问类方法

4.对象可以直接访问静态方法

5.对象可以直接访问实例方法

Python的动态特性

动态的添加类属性:

class AI:
    __slots__ = ('hp','mp','move') #限制python的动态性
def move(self,speed):
    print('以',speed,'的速度移动')

ai = AI()
ai.hp = 100
ai.mp = 1000

print(ai.mp)
print(ai.hp)


# ai.attack = 1000
# print(ai.attack)

AI.count = 10000
print(AI.count)

import types
ai.move = types.MethodType(move , ai)
ai.move(200)

动态的添加类方法、静态方法

class Book:
    pass

@staticmethod
def static_method():
    print('this is static method')
@classmethod
def cls_info(cls):
    print(cls.__mro__)

Book.static_fun = static_method
Book.class_fun = cls_info



Book.static_fun()
Book.class_fun()

动态的删除属性、方法

import types
class AI(object):
    def __init__(self):
        pass

    def run(self):
        pass

    @staticmethod
    def introduce():
        pass

    @classmethod
    def class_info(cls):
        pass

#定义类方法
@classmethod
def attack(cls):
    print('attack')

#定义静态方法
@staticmethod
def dead():
    print('dead')

def move(self,speed):
    print('move', speed)
a1 = AI()
a1.move = types.MethodType(move,a1)
AI.attack = attack
AI.attack()
AI.dead = dead
AI.dead()


del a1.move

del AI.attack
del AI.dead

#只能删除动态添加的实例方法
#del a1.run #报错


#可以删除在类中的静态方法和类方法
del AI.introduce
del AI.class_info

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值