Python基础核心经典教程(026)——面向对象入门


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

面向对象概述

面向对象编程中有两个非常重要的概念:类和对象。

类是一个抽象的概念,它是对一类具有相同特征或者行为的事物的统称;其中,特征被称为属性,行为被称为方法。

对象是一个具体的事务,它是由类创建出来的具体事务。由哪一个类创建出来的对象,就拥有在该类中定义的属性和方法。

这么说起来,可能大家还是有些疑惑的。没关系,我们来看个例子,我们来瞅瞅工厂是怎么造车的。

  • 1、设计图纸
    在图纸上画好汽车各零件的尺寸
  • 2、依据图纸造车
    在生成车间按照图纸造车

这个图纸就相当于是一个类,造出来的车就是一个个对象。车的颜色、长宽高就是类的属性;启动,前进,后退,停车就是类的方法。而且,依据同一张图纸可以造车多辆车;类似地,依据同一个类可以生成多个对象。

面向对象基础语法

在此,简要介绍面向对象最基础的语法。

定义类

class 类名:
  • 1、使用关键字class定义类
  • 2、类名首字母大写
  • 3、在类中定义属性和方法

创建对象

对象名 = 类名()

示例

"""
原创作者:谷哥的小弟
博客地址:http://blog.csdn.net/lfdfhl
示例描述:面向对象基础
"""


# 定义类
class Dog:
    # 定义方法
    def eat(self):
        print("小狗吃骨头")

    # 定义方法
    def sleep(self):
        print("小狗睡觉")


# 创建对象
dog1 = Dog()
objectType = type(dog1)
print("对象的类型%s" % objectType)
address = id(dog1)
print("对象的内存地址%x" % address)
# 调用方法
dog1.eat()
dog1.sleep()

# 创建对象
dog2 = Dog()
objectType = type(dog2)
print("对象的类型%s" % objectType)
address = id(dog2)
print("对象的内存地址%x" % address)
# 调用方法
dog2.eat()
dog2.sleep()

在这里插入图片描述在该示例中,我们定了类和类中的函数;然后,创建对象并通过对象调用方法。

self

在Python中self代表调用该函数的对象。也就是说:哪个对象调用了该方法,那么self就代表该对象。

示例

"""
原创作者:谷哥的小弟
博客地址:http://blog.csdn.net/lfdfhl
示例描述:面向对象基础
"""


# 定义类
class Dog:
    # 定义方法
    def eat(self):
        objType = type(self)
        print("对象的类型%s" % objType)
        add = id(self)
        print("对象的内存地址%x" % add)
        print("小狗%s吃骨头" % self.name)

    # 定义方法
    def sleep(self):
        objType = type(self)
        print("对象的类型%s" % objType)
        add = id(self)
        print("对象的内存地址%x" % add)
        print("小狗%s睡觉" % self.name)


# 创建对象
dog1 = Dog()
objectType = type(dog1)
print("对象的类型%s" % objectType)
address = id(dog1)
print("对象的内存地址%x" % address)
# 为对象添加属性(不推荐)
dog1.name = "tom"
# 调用方法
dog1.eat()
dog1.sleep()
print("-"*30)
# 创建对象
dog2 = Dog()
objectType = type(dog2)
print("对象的类型%s" % objectType)
address = id(dog2)
print("对象的内存地址%x" % address)
# 为对象添加属性(不推荐)
dog2.name = "jack"
# 调用方法
dog2.eat()
dog2.sleep()

在该示例中通过对象名.属性名=属性值的方式为对象设置属性并且在类中的方法里通过self.属性名的方式获取属性值。但是,不推荐使用对象名.属性名=属性值的方式为对象设置属性;因为,属性应该封装在类的内部。

Python对象内置函数

在此,介绍与对象相关的内置函数。

方法名 作用
_ _ new _ _ 创建对象时,该方法会被自动调用;该方法较少使用
_ _ init _ _ 对象被初始化时,该方法会被自动调用;该方法较常使用
_ _del _ _ 对象被从内存中销毁时,该方法会被自动调用;该方法较少使用
_ _ str _ _ 返回对象的描述信息;该方法较常使用

示例1

"""
原创作者:谷哥的小弟
博客地址:http://blog.csdn.net/lfdfhl
示例描述:面向对象基础
"""


class Dog:
    def __new__(cls, *args, **kwargs):
        print("调用__new__()")
        cls.instance = super().__new__(cls)
        return cls.instance

    def __init__(self):
        print("调用__init__()")

    def __str__(self):
        print("调用__str__()")
        return "__str__()方法的返回值"

    def __del__(self):
        print("调用__del__()")

    # 定义方法
    def eat(self):
        print("小狗吃骨头")

    # 定义方法
    def sleep(self):
        print("小狗睡觉")


# 创建对象
dog = Dog()
# 调用方法
dog.eat()
dog.sleep()
# 打印对象
print(dog)

在这里插入图片描述
从这个例子,我们看到:

扫描二维码关注公众号,回复: 11653329 查看本文章
  • 1、_ _ new _ _方法最先自动执行,该方法返回一个对象
  • 2、_ _ new _ 方法之后自动执行 _ init _ _方法
  • 3、在程序执行完毕时自动调用_ _ del _ _方法,从内存中销毁该对象
  • 4、重写_ _ str_ 方法后print( )函数打印对象时打印的是 _ str_ _方法的返回值

示例2

"""
原创作者:谷哥的小弟
博客地址:http://blog.csdn.net/lfdfhl
示例描述:面向对象基础
"""


# 定义类
class Dog:
    # 重写__init__方法
    def __init__(self, name):
        # 为类的属性name赋值
        self.name = name

    # 定义方法
    def eat(self):
        print("小狗%s吃骨头" % self.name)

    # 定义方法
    def sleep(self):
        print("小狗%s睡觉" % self.name)


# 创建对象并设置对象的属性
dog = Dog("tom")
# 获取对象的属性
name = dog.name
# 打印对象的属性
print("小狗的名字是%s" % name)
# 调用对象的方法
dog.eat()
dog.sleep()

在这里插入图片描述从这个例子,我们看到:

  • 1、在类中重写了_ _ init _ _方法。在该方法中增加了参数name,代表类的属性;所以,该类的每个对象都有一个name属性。
  • 2、在创建对象时可传入该对象name的值,即为该对象属性赋值
  • 3、可通过对象名.属性名获取该对象的属性值

猜你喜欢

转载自blog.csdn.net/lfdfhl/article/details/106097675