• python学习之类和对象


    类和函数中都可以创建闭包或者内部函数
    self 代表实例对象本身
    访问一个属性,它同时也是一个对象,拥有自己的属性

    特殊类属性
    C.__name__ 类C的名字
    C.__doc__ 类C的文档字符串
    C.__bases__ 类C的所有父类构成的元组
    C.__dict__ 类C的属性
    C.__module__ 类C定义所在的模块
    c.__class__ 实例c对应的类
    C.__mro__ 类查找顺序
    issubclass(sub,sup) sub子类,sup父类,判断子类是否是父类子类
    isinstance(obj1,obj2) obj1实例,obj2类,判断obj1是否是obj2实例
    vars() 与dir()相似,只是给定的对象参数都必须有一个__dict__属性,返回一个字典。

    动作和特征的集合叫对象
    类抽象的共同的动作,共同的特征

    类:把一类事物的相同的特征和动作整合到一起就是类
    类是一个抽象的概念

    对象:就是基于类而创建的一个具体的事物(具体存在的)
    也是特征和动作整合到一起

    1.什么叫类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物(事物即数据和动作的结合体),
    用它来生产真实的物体(实例)

    2.什么叫对象:睁眼睛,你看到的一切的事物都是一个个的对象,你可以把对象理解为一个具体的事物
    (事物即数据和动作的结合体)
    (铅笔是对象,人是对象,房子是对象,狗是对象

    3.类与对象的关系:对象都是由类产生的,上帝造人,上帝首先有一个造人的模板,这个模板即人的类,然后
    上帝根据类的定义来生产一个个人

    4。什么叫实例化:由类生产对象的过程叫实例化,类实例化的结果就是一个对象,或者叫做一个实例(实例=对象)

    属性
    类是用来描述一类事物,类的对象指的是这一类事物中的一个个体是事物就要有属性,
    属性分为
    1.数据属性:变量
    2.函数属性:函数 面向对象里通常称为方法
    注意:类和对象均用点来访问自己的属性

    类名.__dict__查看类属性字典
    实例.__dict__查看实例属性字典,作用域是__init__范围

    静态属性@property 封装逻辑
    class test_static(object):
    def __init__(self):
    self.width=10
    self.hight=5

    def cal_area(self):
    return self.width*self.hight

    @property
    def mutstion_cal_area(self):
    return self.width*self.hight

    test=test_static()
    print(test.cal_area())
    print(test.mutstion_cal_area)

    类方法 (跟实例没有关系,类级别操作)
    class Test_Static(object):
    tag = 1

    def __init__(self):
    self.width = 10
    self.hight = 5

    @classmethod
    def tell_info(cls):
    print('---->', cls.tag)

    Test_Static.tell_info()

    静态方法(名义上归属类管理,不能使用类变量和实例变量,是类的工具包)
    class Test_Static(object):
    tag = 1

    def __init__(self):
    self.width = 10
    self.hight = 5

    @staticmethod
    def wash_body(a,b,c):
    print('%s %s %s正在洗澡'%(a,b,c))

    Test_Static.wash_body('zhao','qian','sun')
    t1=Test_Static()
    t1.wash_body('add','sub','mol')

    组合(类跟类之间的没有共同点,但是它们之间是有关联的)
    class School:
    def __init__(self,name,addr):
    self.name=name
    self.addr=addr

    class Course:
    def __init__(self,name,price,period,school):
    self.name=name
    self.price=price
    self.period=period
    self.school=school

    def zhao_sheng(self):
    print('%s zheng zai zhao sheng'%self.name)

    s1=School('oldboy','beijing')
    s2=School('oldboy','nanjing')
    s3=School('oldboy','dongjing')

    c1=Course('linux',10,'1h',s1)
    print(c1.__dict__)
    print(c1.school)
    print(s1)

    {'name': 'linux', 'price': 10, 'period': '1h', 'school': <__main__.School object at 0x0000000002943320>}
    <__main__.School object at 0x0000000002943320>
    <__main__.School object at 0x0000000002943320>

  • 相关阅读:
    Scala 学习之 aggregate函数
    CentOS6.5+hadoop-2.5.2+hbase-1.0.1.1+zookeeper-3.4.6之zookeeper配置
    swiper.min.js.map访问404解决办法
    CentOS6.5上搭建hadoop 2.5.2 笔记
    Java 多线程编程中单例的实现
    关于 nohup 执行命令以后 需要再按回车才能起效的解决办法
    java定时任务之 Timer
    关于solr异常:org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http:192.168.0.11/solr/的解决
    关于dubbo服务产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer.
    关于maven使用产生的异常之:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile
  • 原文地址:https://www.cnblogs.com/jinpingzhao/p/12745784.html
Copyright © 2020-2023  润新知