zoukankan      html  css  js  c++  java
  • python: 面向对象:类和对象调用类中的变量和方法

    一. 面向对象初识

       我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里。但用面向过程的方法去写程序,只能实现一个功能,我们要实现很多功能时,需要写很多个代码块,每一个代码块的作用域都是全局的,要相对一个功能进行改动,还要考虑与其它代码块的联系,这样就造成了代码的可扩展性和维护性。那么装到函数里就好了吗?装到函数里变量只能作用于函数里,其他的函数无法使用到该函数的变量。这时可以用面向对象的程序设计方法解决这些问题。面向对象的核心是对象,用对象来操控类里面的方法(函数)和变量,加上类还具有继承、封装、多态三大特性,提高了代码的复用性和规范性。

    二. 类,对象

    1. 类

      语法:  class 类名:

            类体

      类体:两部分:变量部分(静态变量),方法(函数)部分

    #定义一个类
    class name:
        pass

    2. 对象

       类名()就是对象, 类名()的这个过程:实例化的过程(创建一个对象的过程),

    class name:
        pass
    name()  # 对象创建

    三. 类,对象调用类中的变量和方法.

    1. 类调用类中的变量和方法

    (1) __dict__方法(操作类中的静态变量):只能查询不能增、删、改。

    class Person:
        mind = '有思想'
        belif = '有信仰'
        animal = '高级动物'
    
    
    print(Person.__dict__)  # 查询类Person中所有的内容,展现形式是字典.
    print(Person.__dict__['belif'])  # 查询类Person中的变量'belif'
    # Person.__dict__['belif'] = '无信仰'  # 修改变量'belif'的值会报错

    (2). 万能的点: .

    class Person:
        mind = '有思想'
        belif = '有信仰'
        animal = '高级动物'
        def work():
            print('666')
        def money():
            print('777')
    
    print(Person.animal)  # 高级动物
    print(Person.mind)  # 有思想
    Person.mind = '没有思想'  # 修改变量'mind'的值,可以通过Person.__dict__查看修改后的内容
    Person.pay = '货币交换'  # 增加变量'pay'和它的值,可以通过Person.__dict__查看增加后的内容
    Person.say = '语言交流'
    print(Person.work())  # 也可以调用类中的方法(函数),一般不用类名去操作
    print(Person.__dict__)  # 查看类中所有的内容

    2. 对象调用类中的变量和方法

      __init__方法是一个特殊的方法,只要类名+() 产生一个对象,自动执行类中的__init__方法,并把类的地址传给方法里的第一个参数,约定把第一个参数定为'self', 再给对象封装相应的属性.

    (1) __dict__ 查询对象中的所有的内容

    (2)  万能的点: .

    class Person:
        mind = '有思想'
        belif = '有信仰'
        animal = '高级动物'
        def __init__(self, name,age,hobby):
            self.name = name
            self.age = age
            self.hobby = hobby
            print(name,age,hobby)
        def work(self):
            print('会工作')
            return self
        def money(self):
            print('会消费')
            print(self)
    
    
    ret = Person('jack',22, '敲键盘')  # 类名+() 的这个过程:实例化的过程(创建一个对象的过程)
    # jack 22 敲键盘
    print(ret) # Person()创建一个对象空间,把这个空间的地址赋值给ret # <__main__.Person object at 0x0000021248F46550>
    print(ret.__dict__) # 查询对象中所有的内容: {'name': 'jack', 'age': 22, 'hobby': '敲键盘'} print(Person.work(111)) # 调用方法,并把111传给self,(一般通过对象调用类的方法,而不是类)
     # 会工作 # 111 # print(Person.money()) 类调用方法时不传参数会报错
    ret.work()  # 对象可以直接调用类中的方法不用给self传参
    # 会工作
    无限的我,现在才开始绽放,从东边的第一缕阳光到西边的尽头
  • 相关阅读:
    PNG背景透明问题
    多文件上传
    Silverlight+WCF 新手实例 象棋 游戏房间列表(十三)
    Silverlight+WCF 新手实例 象棋 房间状态更新(二十)
    Silverlight+WCF 新手实例 象棋 WCF通讯基础(十四)
    Silverlight+WCF 新手实例 象棋 登陆与转向(十一)
    Silverlight+WCF 新手实例 象棋 回归WCF通讯应用登陆(十八)
    Silverlight+WCF 新手实例 象棋 棋子移动吃子(五)
    Silverlight+WCF 新手实例 象棋 游戏房间(十二)
    Silverlight+WCF 新手实例 象棋 棋子移动规则[附加上半盘限制](十)
  • 原文地址:https://www.cnblogs.com/huangqihui/p/9355308.html
Copyright © 2011-2022 走看看