zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    Spark Locality Sensitive Hashing (LSH)局部哈希敏感
    Spark ChiSqSelector 卡方选择器
    图解开源协议
    如何使用Hasu USB to USB Controller Converter刷写tmk固件交换Caps和Ctrl
    使用PHP读取PHP文件并输出到屏幕上
    Mac修改显示器使支持原生缩放
    PHP中使用PDO的预处理功能避免SQL注入
    如何做数据库分页查询
    Chrome报错提示Unchecked runtime.lastError: The message port closed before a response was received.
    Parallels Desktop虚拟机无法关机提示“虚拟机处理器已被操作系统重置”
  • 原文地址:https://www.cnblogs.com/jinpingzhao/p/12745784.html
Copyright © 2011-2022 走看看