VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • 17.面向对象(一)

一.面向对象的概念

面向对象编程(Object-oriented Programming,简称 OOP),是一种封装代码的方法

为什么要有面向对象:是为了更好地模拟现实世界的事物,并把描述特征的数据和代码块(函数)封装到一起

比如说,将乱七八糟的数据扔进列表中,这就是一种简单的封装,是数据层面的封装;把常用的代码块打包成一个函数,这也是一种封装,是语句层面的封装。

复制代码
class Person:
#比如人有一些属性,名字、性别、年龄等
    name = "Mewtwo"
    sex = ""
    age = 21
 
#人有一些行为动作或者说方法
    def run(self):
        print("人会跑")#会跑
    def shop(self):
        print("人会购物")#会购物
    def sleep(self):
        print("人会睡觉")#会睡觉
复制代码

面向对象中,常用术语包括:

  • 类:可以理解是一个模板,通过它可以创建出无数个具体实例。比如,前面编写的 tortoise 表示的只是乌龟这个物种,通过它可以创建出无数个实例来代表各种不同特征的乌龟(这一过程又称为类的实例化)。
  • 对象:类并不能直接使用,通过类创建出的实例(又称对象)才能使用。这有点像汽车图纸和汽车的关系,图纸本身(类)并不能为人们使用,通过图纸创建出的一辆辆车(对象)才能使用。
  • 属性:类中的所有变量称为属性。例如,tortoise 这个类中,bodyColor、footNum、weight、hasShell 都是这个类拥有的属性。
  • 方法:类中的所有函数通常称为方法。不过,和函数所有不同的是,类方法至少要包含一个 self 参数(后续会做详细介绍)。例如,tortoise 类中,crawl()、eat()、sleep()、protect() 都是这个类所拥有的方法,类方法无法单独使用,只能和类的对象一起使用。

二.类的定义

Python 中使用类的顺序是:先创建(定义)类,然后再创建类的实例对象,通过实例对象实现特定的功能。

如何创建一个类:

  class 类名(每个单词首字母大写,单词之间不用符号隔开):
     零个到多个类属性...(无先后顺序之分,相互之间可以调用)
     零个到多个类方法...(无先后顺序之分,相互之间可以调用)

Python 的类定义由类头(指 class 关键字和类名部分)和统一缩进的类体构成,在类体中最主要的两个成员就是属性和方法。如果不为类定义任何属性和方法,那么这个类就相当于一个空类,如果空类不需要其他可执行语句,则可使用 pass 语句作为占位符。但是空类没有意义,所以比较少用

定义一个类

class Person :
    '''这是一个学习Python定义的一个Person类'''
    # 下面定义了一个类属性
    hair = 'black'
    # 下面定义了一个say方法
    def say(self, content):
        print(content)
class 语句只能创建一个类,而无法创建类的对象,因此要想使用已创建好的类,还需要手动创建类的对象,创建类对象的过程又称为类的实例化。
  语法:类名(参数)
案例:
  
class Person :
    '''定义的一个Person类'''
    # 定义2个类变量
    name = "Mewtwo"
    age = "22"
    def __init__(self,name,age):
        #定义2个实例变量
        self.name = name
        self.age = age
        print("这个人的名字是:",name," 年龄为:",age)
    # 定义一个say实例方法
    def say(self, content):
        print(content)
# 将该Person对象赋给p变量
p = Person("Mewtwo",22)
类对象的使用
复制代码
# 类名的角度
#     # 操作类中的静态变量
#         # 1, Person.__dict__ 查询类中的所有的内容 (不能进行增删改操作)
# print(Person.__dict__)
# print(Person.__dict__['faith'])
# Person.__dict__['mind'] = '无脑'
# print(Person.__dict__['mind'])
        # 2, 万能的  .  对类中的单个的变量进行增删改查,用 万能的 点
# print(Person.mind)
# print(Person.animal)  # 查
# Person.money = '运用货币'  # 增
# Person.mind = '无脑的' # 改
# del Person.mind
# print(Person.__dict__)
#
#     #操作类中的方法  (工作中基本不用类名去操作)
# # Person.work(111)
#
# # 对象的角度
# ret = Person()  # 类名+()的这个过程:实例化的过程(创建一个对象的过程),
#           # Person() 实例化对象,实例,对象.
# print(ret)
# #1,只要类名+() 产生一个对象,自动执行类中的__init__方法.



class Person:
    '''类体:两部分:变量部分,方法(函数)部分'''
    mind = '有思想'  # 变量,静态变量,静态字段
    animal = '高级动物'
    faith = '有信仰'

    def __init__(self,name,age,hobby):
        self.name = name  #  Person.money = '运用货币'
        self.age = age
        self.hobby = hobby

    def work(self):  # 方法,函数,动态变量

        print('%s都会工作...' %self.name)
    def shop(self):

        print('人类可以消费....')

# 类名的角度
    # 操作类中的静态变量
        # 1, Person.__dict__ 查询类中的所有的内容 (不能进行增删改操作)
# print(Person.__dict__)
# print(Person.__dict__['faith'])
# Person.__dict__['mind'] = '无脑'
# print(Person.__dict__['mind'])
        # 2, 万能的  .  对类中的单个的变量进行增删改查,用 万能的 点
# print(Person.mind)
# print(Person.animal)  # 查
# Person.money = '运用货币'  # 增
# Person.mind = '无脑的' # 改
# del Person.mind
# print(Person.__dict__)

    #操作类中的方法  (工作中基本不用类名去操作)
# Person.work(111)

# 对象的角度
# ret = Person('alex',1000, 'oldwomen')  # 类名+()的这个过程:实例化的过程(创建一个对象的过程),
          # Person() 实例化对象,实例,对象.
# print(ret)


#1, 类名+()产生一个实例(对象,对象空间.)
#2, 自动执行类中的__init__方法,将对象空间传给__init__的self参数,
#3, 给对象封装相应的属性.
# print(ret.__dict__)

# 对象的角度
    # 操作对象中的静态变量
        #1, __dict__ 查询对象中的所有的内容
        #2, 万能的.  万能的 点.
# print(ret.name)  # 查
# ret.high = 175  # 增
# del ret.name  # 删
# ret.age = 73 # 改
# print(ret.__dict__)
    # 对象操作类中的静态变量 : 只能查询.
# print(ret.mind)

    # 对象调用类中的方法  (工作中 通过对象执行类中的方法,而不是通过类名)
# ret.shop()
# print(ret)
复制代码

代码是我看视频的时候看到的,上面是我自己总结的,但是感觉面向对象学的有点懵逼,还没完全懂


相关教程