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'的值,可以通过__dicy__查看修改后的内容
Person.pay = '货币交换'  #增加变量'pay'和它的值,可以通过__dicy__查看增加后的内容
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传参
# 会工作

 

转载于:https://www.cnblogs.com/huangqihui/p/9355308.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值