zoukankan      html  css  js  c++  java
  • 面向对象编程

    本节内容

    1.声明类与实例化的格式书写

    2.属性

     3.解密self

    4类属性的增删改查

    5.静态属性property(其实就是数据属性,把函数属性变成数据属性直接通过点就可访问)

    6.类方法classsmethod (不通过实例就用类的方法,不与实例捆绑)

    7.静态方法 staticmethod (类的工具包,不跟类绑定,也不跟实例绑定)

    8.组合:几个类组合在一起(做类跟类的间接关联)


    面向过程的程序设计:核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么......面向过程的设计就好比精心设计好一条流水线,是一种机械式的思维方式。

    面向对象的程序设计:核心是对象二字

    类:把一类事物相同的特征和动作整合到一起

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

    实例化:类生成对象

    1.声明类与实例化的格式书写

    class ‘类名’    #规范首字母大写
        '类的文档字符串'
        类体
    
    p1 = 类名()  #实例化一个类
    

    2.属性

    用来描述着一类事物,类的对象指的是着一类事物的一个个体,是事物就要有属性,属性分为:数据属性(就是变量)、函数属性(就是函数,在面向对象里边通常称方法)

    注意:类和对象均用点来访问自己的属性

    class People:
        '该类为人类'
        start  = 'earth'
    
        def tutan():
            print('吐痰')
    
    print(People.start)   #earth
    print(People.__dict__)  #查看类的属性字典
    print(dir(People))          #查看类属性,列表形式更多
    print(People.__dict__['start'])  #通过属性字典方位自己的属性
    People.tutan()
    People.__dict__['tutan']()
    print(People.__name__)  #查看类名
    print(People.__doc__)      #查看类的文档注释
    print(People.__base__)    #查看类People的父类
    print(People.__bases__)     #与上同,但是元组显示
    print(People.__module__)   #查看类在哪个模块

     

    3.解密self

    为什么凡是类中定义的方法都要加一个self参数呢?

    原因:若不把self参数传进去,则在实例化的时候实例的对象会自动把自己传进去,而他定义的方法无参数,则报错

    4类属性的增删改查

    函数属性命名规则:v+n  (动词+名词)

    class ChinesePeople:
        country = 'China'
        def __init__(self,name):
            self.name = name
        def play_ball(self,ball):
            print('play ball%s' %ball)
    print(ChinesePeople.country)  #查看类属性
    ChinesePeople.country='world' #改类属性
    
    ChinesePeople.eat = 'rise'  #增加类属性(rise不存在时)
    
    del ChinesePeople.dang  #

    5.静态属性property(其实就是数据属性,把函数属性变成数据属性直接通过点就可访问)

    class ChinesePeople:
        country = 'China'
        def __init__(self,name):
            self.name = name
        @property     #play_ball  = property(play_ball)
        def play_ball(self):
            print('play ball')
    p1 = ChinesePeople('haha')
    p1.play_ball    #打印play ball

     

    6.类方法classsmethod (不通过实例就用类的方法,不与实例捆绑)

    class ChinesePeople:
        country = 'China'
        def __init__(self,name):
            self.name = name
        @classmethod   #play_ball = classmethod(play_boy)
        def play_ball(cls):
            print('play ball')
    ChinesePeople.play_ball()  #不用穿参数

    7.静态方法 staticmethod (类的工具包,不跟类绑定,也不跟实例绑定)

    class ChinesePeople:
        country = 'China'
        def __init__(self,name):
            self.name = name
        @staticmethod
        def play_ball():
            print('play ball')
    ChinesePeople.play_ball()    #实例与属性都可调用
    p1 = ChinesePeople('aa')
    p1.play_ball()

    8.组合:几个类组合在一起(做类跟类的间接关联)

    class Hand:
        pass
    class Foot:
        pass
    class Trunk:
        pass
    class Person:
        def __init__(self,id_num,name,hand,foot,trunk):
            self.id_num = id_num
            self.name = name
            self.hand = Hand()
            self.foot = Foot()
            self.trunk = Trunk()
            

    注意:若子类Person定义的属性与父类重名,则只在自己的作用域中找

     

  • 相关阅读:
    前端开发者进阶之ECMAScript新特性--Object.create
    JS事件:target与currentTarget区别
    30分钟掌握ES6/ES2015核心内容
    百度跨域搜索demo
    <a>标签的SEO优化细节
    jQuery之异步Ajax请求使用
    小tips: zoom和transform:scale的区别
    JSP页面静态化总结之一使用URLRewrite实现url地址伪静态化
    web前端安全机制问题全解析
    【转】Asp.net MVC Comet推送
  • 原文地址:https://www.cnblogs.com/echoboy/p/9060136.html
Copyright © 2011-2022 走看看