• 面向对象注意事项


    在面向对象中,有实例变量和类变量,实例变量为类对象的实例成员,而类变量不仅类可以直接调用,而且类的对象也可以调用。类对象可以对实例变量进行添加、修改、删除操作等。。。

    下面就用个示例来做参考:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    class  PersonInfo(object):
        commity_data = 123
        def  __init__(self,name,age):
            self.name = name
            self.age = age
        def  weight(self):
            print('%s weight is high'% self.name )
    
        def  happie(self):
            print('happie de age is %' % self.age)
    
    p1 = PersonInfo('goser',20)
    p2 = PersonInfo('jain',23)
    p1.commity_data = 'change_data'
    p1.sex = 1
    p1.age = 28
    del p1.name
    print(p1.sex,p1.age,p1.commity_data,p2.commity_data)
    
    PersonInfo.commity_data = 'test'
    
    print(p1.commity_data,p2.commity_data)
    

    代码说明:

    p1.sex = 1表示对类对象p1做变量的添加操作,
    p1.age = 28表示对类对象p1做变量的修改操作
    del p1.name表示对类对象p1做变量的删除操作
    p1.commity_data = 'change_data'表示对类对象p1调用类变量时对类变量的修改操作,这个操作只是对象p1在自己的内存地址中加上变量commity_data,切其值被赋予了新值为‘change_data’,这个变更类变量的值只对对象p1生效,对对象p2不起作用。
    PersonInfo.commity_data = 'test'表示类调用类变量时对类变量的修改,这个修改只对对象p2生效,因为对象p2内存地址中没有添加类变量commity_data,所以p2还是引用了类中的类变量,而p1没有变化,依然调用的是自己后来添加的commity_data
     
    运行结果:
    (1, 28, 'change_data', 123)
    ('change_data', 'test')
    

    在面向对象中的多继承的注意事项:

    python2中,经典类是按深度优先来继承,新式类是按广度优先来继承的

    python3中,经典类和新式类都是按广度优先来继承的。

  • 相关阅读:
    selenium iframe 定位 qq空间说说
    单个 进程网速 消耗 网路 带宽
    网页加速
    baidu 验证网站 一一映射
    内容原发网站seo不重视2个标签,导致seo效果不如转发网站
    vi shell 的水平 决定了 手机shell 办公的效率
    键盘控制鼠标
    seo 谷歌去年悄然收购这家英国硬件公司
    视频 爬虫
    python 深浅 拷贝
  • 原文地址:https://www.cnblogs.com/goser/p/7091611.html
Copyright © 2020-2023  润新知