zoukankan      html  css  js  c++  java
  • 10.面向对象(类、对象、属性及方法)

    1、python是一门解释性语言,同时也是面向对象编程语言

    什么面向对象编程?一切皆对象
    什么对象?
    特征:属性
    行为:方法

    在面向对象编程中,最常见的表现就是基于类(Class)来表现的,每一个对象实例都有具体的类

    2、什么类
    1、概念:具有相同的属性和方法的对象的集合(模型)

    2、定义类

    class 类名:
    类主体


    class People:
    # 属性
    pcount=0

    #方法:用来描述类的行为
    def speak(self):
    print('会说话...........')

    3)操作类

    1)类实例化及类的引用

    对象:通过类定义的数据结构实例(类的实例)

    实例化:创建一个类的实例,类的具体对象。


    class People:
    # 属性
    pcount=0
    name='yourname'

    #方法:用来描述类的行为
    def speak(self):
    print('会说话...........')

    #实例化一个对象
    Y=People()
    # 类的引用:调用属性和方法
    print('通过对象引用属性:',Y.name,Y.pcount)
    print('通过类引用属性:',People.pcount,People.name)
    Y.speak() #通过对象调用,当前方法不可以通过类来进行调用

    3、构造函数
    该方法在类实例化时会自动调用。
    当然, __init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上

    class People:
    # 属性
    pcount=0
    name='yourname'

    # 构造方法:创建对象时候进行自动调用
    def __init__(self,name,age):
    self.name=name
    self.age=age

    #方法:用来描述类的行为
    def speak(self):
    print('会说话...........')

    #实例化一个对象
    pix=People('pix',18)
    print(pix.name,pix.age)

    4、属性

    1)类属性
    相当于全局变量,实例对象共有的属性,可以通过类或者对象进行调用

    2)实例属性
    实例对象自己私有。(只有对象可以进行调用)


    3)内置属性 通过类来进行调用
    类名.__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
    类名.__doc__ :类的文档字符串
    类名.__name__: 类名
    类名.__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
    类名.__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

    class People:
    '''这是一个人类'''
    # 类属性
    pcount=0
    name='yourname'

    # 构造方法:创建对象时候进行自动调用
    def __init__(self,name,age):
    self.name=name
    self.age=age #实例属性:在方法里进行定义

    #方法:用来描述类的行为
    def speak(self):
    print('会说话...........')

    #实例化一个对象
    pix=People('pix',18)
    print('对象调用类属性:',pix.pcount)
    print('类调用类属性:',People.pcount)
    # 实例属性只能通过对象进行调用
    print('实例属性只能通过对象进行调用:',pix.age)
    print('内置属性调用',People.__bases__)
    print('内置属性调用',People.__doc__)
    print(People.__dict__)
    print(People.__name__)

    4)私有属性 后面讲

    5、方法类型

    1)实例方法
    跟函数差不多,只是带有一个默认参数self
    对象可以进行调用,不能通过类来进行调用

    2)类方法
    带@classmethod装饰器的方法,并且默认参数cls
    类和对象都可以进行调用

    3)静态方法
    由@staticmethod装饰的方法,没有self这个参数,而将这个方法当成一个普通的函数使用。
    可以被类或类的实例对象调用


    4)内置方法
    __init__(self,....):构造方法,在生成对象时调用,可以用来进行一些初始化操作,不需要显示去调用,系统会默认去执行。
    __del__(self):析构方法,在释放对象时调用,支持重载,可以在里面进行一些释放资源的操作,不需要显示调用。
    __str__(self,…):自定义实例输出方法,写好该方法后,替换实例默认的输出操作。
    __getattribute__(...):获取实例属性的值,可直接结合对象使用。


    5)私有方法 后面讲

    class People:
    '''这是一个人类'''
    # 类属性
    pcount=0
    name='yourname'

    # 构造方法:创建对象时候进行自动调用
    def __init__(self,name,age):
    self.name=name
    self.age=age #实例属性:在方法里进行定义

    def __del__(self):
    print('释放对象会调用__del__函数')

    def __str__(self):
    return "hello testcode"


    #实例方法:用来描述类的行为
    def speak(self):
    print('会说话...........')

    @classmethod
    def class_methon1(cls):
    print('这是一个类方法')
    cls.pcount=5
    #类方法里面可以调用类属性或类方法

    @staticmethod
    def static_methon1():
    print('这是一个静态方法')

    #实例化一个对象
    pix=People('pix',18)
    # print(pix.pcount)
    # 实例方法只能通过对象调用,不能通过类来进行调用
    pix.speak()
    # 调用类方法
    print('类进行调用类方法:',People.class_methon1())
    # print(pix.pcount)
    print('对象进行调用类方法:',pix.class_methon1())
    # 调用静态方法
    print('类进行调静态方法:',People.static_methon1())
    print('对象进行调用静态方法:',pix.static_methon1())
    print("调用__del__()",pix)


    6、私有成员(私有方法、私有属性)


    类的私有方法:用两个下划线__开头,不能类外部访问,使用时是用self.类私有方法

    类的私有属性:两个下划线开头,不能类外部和直接访问,使用是用self.私有属性名

    私有属性在外部如何进行访问:对象._类名+私有属性名

    类外部方法私有方法:对象._类名+私有方法()
    class People:
    '''这是一个人类'''
    # 类属性
    pcount = 0
    name = 'yourname'
    # 私有属性 类内部可以使用,类的外部不可以使用
    __weight=80
    def __init__(self,name,age,weight):
    # 实例属性
    self.name=name
    self.age=age
    self.__weight=weight

    # 实例方法:用来描述类的行为
    def speak(self):
    print('测码VIP自动化课程')
    self.__mimi()

    #私有方法
    def __mimi(self):
    print('这是一个私有方法')

    yu=People('鱼',18,120)
    # 私有属性如何进行类外部进行访问:对象._类名+私有属性
    print('类外部调用私有属性:',yu._People__weight)
    # 类外部方法私有方法:对象._类名+私有方法()
    yu._People__mimi()
    yu.speak()

  • 相关阅读:
    设计模式(Design Pattern)扫盲
    SharePoint 2007 采用表单验证 (1) 失败:(
    发布一款给图片批量加水印的程序PicNet V1.0
    转篇文章,VS2005开发的dll如何安装进GAC
    cnblogs排名进入1500,纪念一下
    转载一篇提高baidu/google收录的文章
    关于.NET(C#)中字符型(Char)与数字类型的转换, CLR via c# 读书笔记
    《天风文章》V1.2.0 新闻/文章类asp.net2.0站点系统源码 (100%开源)
    推荐个.Net的论坛系统 Discuz!NT
    C#实现对图片加水印的一段代码.
  • 原文地址:https://www.cnblogs.com/Murraya/p/14020960.html
Copyright © 2011-2022 走看看