Python面向对象和类(一)

面向对象编程 Ojbect-Oriented Programing

 什么是对象:
    对象是指现实中的物体过实体

 对象有什么特征:
    对象有很多属性(名词,形容词)
      姓名,年龄,性别
    对象有很多行为(动作,动词)
      学习,吃饭,睡觉,踢球,工作,借钱

  面向对象

把一切都看成对象(实例) 用各种对象之间的关系来描述事务

类(class)

   拥有相同属性和行为的对象分为一组,即为一个类
   类是用来描述对象的工具,用类可以创建此类的对象(实例)

面向对象示意:
    车(类)  ------> BYD E5(京A.88888)  实例(对象)
            \
             \---> BMW X5 (京B.00000) 实例(对象)

    狗(类)  ------> 小京巴(户籍号: 000001)
            \
             \----> 导盲犬(户籍号: 000002)

    int(类)  ----> 100 (对象)
            \
             \---> 200 (对象,实例)

类的创建语句: 

class 类名(继承列表):
      '类的文档字符串' 
      实例方法的定义
      类变量的定义
      类方法的定义(@classmethod)
      静态方法的定义(@staticmethod)

作用:
    创建一个类
    类用于描述对象的行为和属性
    类用于创建此类的一个或多个对象(实例)
说明:
    类名必须为标识符
    类名实质上就是变量, 它绑定一个类

构造函数

构造函数的调用表达式
  语法:
          类名([创建传参列表])

  作用:
       创建这个类的实例对象,并返回此实例的引用关系

实例对象说明:

  1. 实例有自己的作用域和名字空间,可以为该类的对象添加实例变量(也叫属性)
  2. 实例可以调用类方法和实例方法
  3. 实例可以访问类变量和实例变量

实例方法 method

语法:
    class 类名(继承列表):
        def 实例方法名(self, 参数1, 参数2, ...):
            '文档字符串'
            语句
  作用:
         用于描述一个对象的行为,让此类型的全部对象都拥有相同的行为
  说明:
    1. 实例方法实质是函数,是定义在类内的函数
    2. 实例方法至少有一个形参有,第一个形参代表调用这个方法的实例,一般命名为 'self'

实例方法的调用语法:

  实例.实例方法名(调用传参)
  或
  类名.实例方法名(实例,调用传参)

实例属性 attribute(也叫实例变量)

每个实例对象可以有自己的变量,称为实例变量(也叫属性)

语法:
   
实例.属性名

赋值规则:
    首次为属性赋值则创建此属性
    再次为属性赋值则修改属性的绑定关系


作用:
    记录每个对象自身的数据

删除属性 del 语句

del 对象.实例变量名

 例如:
    class Dog:
        pass
    dog1 = Dog()
    dog1.color = "白色"
    del dog1.color  # 删除 

del 语句

  del 变量名                      删除变量
  del 列表[整数表达式]     删除列表中的元素
  del 字典[键]                    删除字典中的键
  del 对象.属性                 删除对象的属性

初始化方法:

作用:
    对新创建的对象添加属性

语法:
    class 类名(继承列表):
        def __init__(self [, 形参列表]):
            语句块

    [ ] 代表中的内容可省略
说明:
    1. 实始化方法名必须为 '__init__' 不可改变
    2. 初始化方法会在构造函数创建实例后自动调用.且将实例自身通过第一个参数self 传入 __init__ 方法
    3. 构造函数的实参将通过__init__方法的参数列表传入到 '__init__' 方法中
    4. 初始化方法内如果需要return 语句返回,则只能返回None

示例:

# 写一个Student类
#     1) 为该类添加初始化方法, 实现在创建对象时自动设置
#       '姓名','年龄', '成绩' 属性
#     2) 添加set_score方法能修改成绩信息
#     3) 添加show_info方法打印学生对象的信息
class Student:

    def __init__(self, name, age, score):
        self.name = name
        self.age = age
        self.score = score

    def set_score(self, s):
        self.score = s

    def show_info(self):
        print("{}今年{}岁,成绩是:{}分".format(self.name,
                                       self.age,
                                       self.score))

c1 = Student("小张", "25", "78")
c1.show_info()  # 小张今年25岁,成绩是:78分
c1.set_score(50)
c1.show_info()  # 小张今年25岁,成绩是:50分

析构方法:

语法:
    class 类名:
        def __del__(self):
            ...
说明:
    析构方法在对象被销毁时被自动调用
    python建议不要在对象销毁时做任何事情,因为销毁的时间难以确定

示例:

# 此示例示意析构方法的用法
class Car:

    def __init__(self, name):
        self.name = name
        print("汽车", name, '被创建')

    def __del__(self):
        '''析构方法,此方法会在对象销毁时自动被调用'''
        print('汽车', self.name, '被销毁')


c1 = Car('BYD E6')
c2 = c1
del c1  # 此时是删除c1变量,同时解除c1绑定的对象的引用

预置实例属性

__dict__ 属性
    __dict__ 属性绑定一个存储此实例自身变量的字典

示例:

class Dog:
    pass

dog1 = Dog()
print(dog1.__dict__)  # {}
dog1.kinds = '京巴'
print(dog1.__dict__)  # {'kinds': '京巴'}

__class__ 属性
       此属性用于绑定创建些实例的类

作用:
    可以借助于此属性来访问创建此实例的类
示例:
    class Dog:
        pass
    dog1 = Dog()
    print(dog1.__class__)
    dog2 = dog1.__class__()
    print(dog2.__class__)

用于类的函数:

  • isinstance(obj, 类或元组)            返回这个对象obj是否是某个类的对象或某些类中的一个类的对象,如果是则返回True,否则返回False
  • type(obj)                                              返回对象的类型

猜你喜欢

转载自blog.csdn.net/py_1995/article/details/84110515