• 面向对象


    面向对象核心是:对象
    对象是一系列特征与技能的结合体
    优点:可扩展性强
    缺点:编写复杂
    如何创建对象?先学会定义类
    什么是类?
    存放多个对象相同数据功能的容器
    如何定义类
    关键字:class
    名字采用驼峰体,类代码执行之后产生的名字放到名名称空间
    使用__dict__可以看到类,或对象内的名称空间

    类的实例化——加括号调用,才能产生对象

    调用类发生的事情:
    1,会产生一个空对象的名称空间
    2.会自动触发__init__,并将对象当做第一参数传入
    3,会将调用括号内参数一并传给__init__()

    查看类与对象的名称空间 .dict

    类和对象的属性工作:增删改查
    增:直接·加要增加关键字,之后复制符号=值
    删:del People.country
    改:对已存在的参数进行句点符调用,等号
    查:句点符,print已有属性

    类中的属性最终都是给对象使用,对象引用类中的属性指向的都是同一个内存地址

    类中方法,def 也是给对象使用的,在调用类实例化的时候,会将对象当做第一参数传入,

    对象属性的查找顺序,先从对象自己的名称空间找,————》再在类的名称空间查找

    对象绑定的特殊:
    1,会将对象当做第一个参数传入
    2,若绑定方法中还有其他函数,一并出入

    案例,人狗大作战——
    class People:
    def init(self,name,life,arg):
    self.name= name
    self.life = life
    self.arg = arg
    def bite(self,dog_obj):
    print(f'{self.name}开始咬{dog_obj.name}')
    dog_obj.life-=self.arg
    print(f'{dog_obj.name}生命减掉{self.arg},还剩下血量{dog_obj.life}')
    if dog_obj.life<=0:
    print(f'{dog_obj.name}已经挂了')
    return True

    class Dog:
    def init(self,name,life,dogtype,arg):
    self.name = name
    self.life = life
    self.dogtype = dogtype
    self.arg = arg
    def bite(self,p_obj):
    print(f'{self.name}开始咬人{p_obj.name}')
    p_obj.life -=self.arg
    print(f'{p_obj.name}生命值减到{p_obj.life},掉{self.arg}血')
    if p_obj.life<=0:
    print(f'{p_obj.name}已经挂')
    return True

    p1 = People('高弟', 2000, 500)
    d1 = Dog('HCY', 250, '哈士奇', 2500)

    p2 = People('高弟2', 5000, 50)
    import time

    while True:
    # 开始人狗互咬
    # if p1.life or d1.life:
    res1 = d1.bite(p2)

    if res1:
        break
    
    time.sleep(1)
    
    res2 = p1.bite(d1)
    
    if res2:
        break
    
    time.sleep(1)
  • 相关阅读:
    JVM 源码分析
    GGGGCCCC
    正则化(Regularization)、过拟合(Overfitting)
    名校课程
    数据库垂直拆分 水平拆分
    运维角度浅谈MySQL数据库优化
    表的垂直拆分和水平拆分
    Eclipse去掉对JS文件的Validation
    Linux定时任务工具crontab详解及系统时间同步
    高性能分布式哈希表FastDHT
  • 原文地址:https://www.cnblogs.com/fxsm/p/11937149.html
Copyright © 2020-2023  润新知