python进阶之面向对象初识

面向对象 

  不同于面向过程的编程思想,面向对象是一种将程序抽象为一个个对象的编程思想,能更好的处理现实世界到的一些复杂问题。

  通过下面的例子来初步了解面向对象的编程方式。

class Person:  # class + 类名 :定义一个类
    place = ‘earth‘  # 类属性 (静态属性)

    # __init__初始化方法,默认创建一个self对象,用来接收对象的属性。可以没有初始化方法
    def __init__(self, name, sex, age, nationality):  # self必须有,其他的参数以对象具有的属性来定义
        self.name = name   # 实例化属性
        self.sex = sex
        self.age = age
        self.nationality = nationality

    def walk(self):  # 方法即函数 (动态属性),定义这一类对象所能做的事情。self必须有
        print(‘%s行走‘ % self.name)

zxc = Person(‘张三‘, ‘男‘, 24, ‘中国‘)  # 对象 = 类名(实例化属性) -- 实例化:创建了一个具体的对象
print(zxc.name)  # 张三        查看对象的属性
print(Person.place)  # earth   查看类的属性
print(zxc.__dict__)      # 查看对象的全部属性  是个字典
print(Person.__dict__)   # 查看类的全部属性    是个字典
zxc.name = ‘李四‘        # 修改属性
zxc.walk()  # 李四行走         使用方法 相当于Person.walk(zxc)

  通过上面的例子简单总结一下

"""
    类:用来描述一类具有相同属性和方法的对象的集合
    实例化:对象 = 类名()
    对象:1,可以查看属性 2,修改属性 3,调用方法
    类:1,实例化 2,调用方法,但是要自己传self参数 3,查看和修改类属性
"""

  下面了解一下类和对象的命名空间,先定义一个类,在实例化两个对象做对比。

class Demo:
    class_nature = ‘静态属性‘
    class_nature1 = [‘静态属性‘]

    def __init__(self, object_nature):
        self.nature = object_nature

    def dynamic_nature(self):
        print(‘动态属性‘)

d = Demo(‘实例化属性‘)
d1 = Demo(‘实例化属性1‘)

  先研究下类

# 类只能调用类属性和动态属性即在类的命名空间中的名字
print(Demo.class_nature)
# print(Demo.nature)  # 报错   类不能访问对象命名空间中的名字

  在看下对象

# 对象可以访问类命名空间中的名字
print(d.class_nature)  # 静态属性
d.dynamic_nature()  # 动态属性

  可以看到对象可以访问类的命名空间中的名字,进而看看是否可以通过对象对类属性进行修改。

# 当属性是不可变数据类型,对象不能修改类命名空间中的名字,所有的修改相当于在对象自己内部创建了一个新的属性
Demo.class_nature = ‘类属性修改‘
d.class_nature = ‘d类属性修改‘
d1.class_nature = ‘d1类属性修改‘
print(Demo.class_nature)  # 类属性修改
print(d.class_nature)     # d类属性修改
print(d1.class_nature)    # d1类属性修改

  在看可变数据类型

# 当属性是可变数据类型,对象可以修改类属性里面的元素,且修改会作用于全部的对象。但是类属性本身还是不能修改
print(Demo.class_nature1)   # [‘静态属性‘]
d.class_nature1[0] = ‘d修改‘
d.class_nature1 = [‘修改‘]
print(d.class_nature1)    # [‘修改‘]
print(Demo.class_nature1)   # [‘d修改‘]
print(d.class_nature1)      # [‘修改‘]
print(d1.class_nature1)     # [‘d修改‘]

  类的组合使用:一个对象的属性值是另外一个类的对象

  下面来个例子感受一下

class Teacher:
    def __init__(self,name, age, birthday):
        self.name = name
        self.age = age
        self.birthday = birthday   # 接收Birthday类的对象,从而通过Teacher类的对象就可以操作Birthday类

class Birthday:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

birth = Birthday(1992, 12, 23)
teacher = Teacher(‘张老师‘, 26, birth)
print(teacher.birthday.year)  # 1992
print(teacher.birthday.month)  # 12
print(teacher.birthday.day)  # 23

原文地址:https://www.cnblogs.com/zxc-Weblog/p/8298628.html

时间: 2024-11-12 19:34:33

python进阶之面向对象初识的相关文章

python基础之面向对象初识

一 面向对象初识 Python要么是面向过程要么是面向对象. 概念及优缺点: 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了程序的复杂度 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的

Python之路 - 面向对象初识

本章内容 编程范式介绍 类与实例 属性与方法 构造函数 命名空间 属性(静态和动态) 与类的关系 对象交互与类的组合 一.编程范式 编程是程序员用 特定的语法 + 数据结构 + 算法组成的代码来告诉计算机如何执行任务的过程 , 而实现一个任务的方式有很多种不同的方式 , 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式 面向过程编程 Procedural Programming 面向过程编程就是程序从上到下一步步执行 , 基本设计思路就是程序一开始是要着手解决一个大的问题

Python 基础之面向对象初识与类的封装

一: 面向对象类的初识#(1) 类的定义#三种方式:#1.class MyClass:    pass #2.推荐class MyClass():    pass #3.class MyClass(object):    pass#(2) 类的实例化class MyClass():    pass#类的实例化,实例化对象obj = MyClass() #obj 就是一个对象#(3)类的基本结构只有成员方法和成员属性对象.属性  对象.方法()#例:class MyClass():    #成员属

Python自动化开发课堂笔记【Day08】 - Python进阶(面向对象的高级用法,网络编程)

面向对象的高级用法 1. __str__ 只要执行打印对象的操作,就会触发该对象类中的__str__方法(也就是对象的绑定方法)它是一种默认的方法,默认的打印输出为<__main__.Foo object at 0x003EE350>,但是如果将该绑定方法在类中重写的话,要求必须有以字符串类型的返回值,返回形式可以自己设定. class Foo: def __init__(self,name,age): self.name = name self.age = age def __str__(s

Python进阶编程 面向对象

一.面向对象 1.1面向对象的基本格式 class 类名: def 方法名(self): print(123) return 123 def 方法名(self): print(123) return 123 ###调用类中的方法### #1.实例化一个对象 obj=类名() #2.通过对象调用方法 result=obj.方法名() 类名的角度调用类中的属性. 1. 查看类中的所有的内容. 类名.__dict__只用于获取类中的全部. # print(Student.__dict__) # pri

Python中面向对象初识到进阶

面向对象初识到进阶 # 面向对象结构: # class 类名: # def __init__(self,参数1,参数2): # self.对象的属性1 = 参数1 # self.对象的属性2 = 参数2 # # def 方法名(self):pass # # def 方法名2(self):pass # # 对象名 = 类名(1,2) #对象就是实例,代表一个具体的东西 # #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法 # #括号里传参数,参数不需要传self,其他与

Python进阶 函数式编程和面向对象编程等

函数式编程 函数:function 函数式:functional,一种编程范式.函数式编程是一种抽象计算机的编程模式. 函数!= 函数式(如计算!=计算机) 如下是不同语言的抽象 层次不同 高阶函数:能接收函数做参数的函数 变量可以指向函数 函数的参数可以接收变量 一个函数可以接收另一个函数作为参数 例子: 接收abs函数, 定义一个函数,接收x,y,z三个参数.其中x,y是数值,z是函数 . 1 2 3 def add(x,y,z):     return z(x)+z(y) print ad

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: ? ? ? ? ? ?将一些东西封装到一个地方,你还可以取出来 ? ? ? ? ? ?类设置静态属性, 设置一些方法 或者 对象, 对象可以在其对象封装一些属性 多态: ? ? ? ? ? ?python默认支持多态, 多态指的是一种事务具有多种形态 ? ? ? ? ? ?1.多态可以增加代码的灵活度: ? ? ? ? ? ?2.以继承和重写父类方法为前提: ?

Python进阶(四十九)-初识Flask Blueprint

Python进阶(四十九)-初识Flask Blueprint 前言   在进行Python Web开发时选择Flask框架.项目模块划分阶段,使用Blueprint(这里暂且称之为“蓝本”).Blueprint通过把实现不同功能的module分开,从而把一个大的application分割成各自实现不同功能的module.在一个Blueprint中可以调用另一个blueprint的view function, 但要加相应的blueprint名.   Blueprint还有其他好处,其本质上来说就