python#面向对象基础

01. 类和对象的概念

类 和 对象 是 面向对象编程的 两个 核心概念

1.1 类

类, 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的,不能直接使用
特征 被称为 属性
行为 被称为 方法
类 就相当于制造飞机时的图纸,是一个 模板,是 负责创建对象的

1.2 对象

对象 是 由类创建出来的一个具体存在,可以直接使用

在程序开发中,应先有类,再有对象

2.1 面向对象基本语法

1.dir内置函数(知道)

方法名 格式的方法是 Python 提供的 内置方法 / 属性’
函数,也是一个方法

2.定义简单的类

class Cat:
    def eat(self):
        print('小猫爱吃鱼')

    def drink(self):
        print("小猫要喝水")

#  创建猫对象 对象变量 = 类名
tom = Cat()

tom.eat()
tom.drink()
print(tom)

结果-----
小猫爱吃鱼
小猫要喝水
<main.Cat object at 0x103c124a8>

Cat 表示 tom 引用了哪个对象(这里说明引用了猫对象)
at 0x103c124a8 说明猫对象存放的地址

class Cat:
    def eat(self):
        print('小猫爱吃鱼')

    def drink(self):
        print("小猫要喝水")

#  创建猫对象 对象变量 = 类名
tom = Cat()

tom.eat()
tom.drink()
print(tom)
print("------------------")
# 创建新的猫对象
lazy_cat = Cat()

lazy_cat.eat()
lazy_cat.drink()
print(lazy_cat)

小猫爱吃鱼
小猫要喝水
<main.Cat object at 0x1015204e0>


小猫爱吃鱼
小猫要喝水
<main.Cat object at 0x1015205c0>


2个输出的地址不一样,说明了 每次对象引用的时候,都会新创建类一个地址

3

由 哪一个对象 调用的方法,方法内的 self 就是 哪一个对象的引用

在类封装的方法内部,self 就表示 当前调用方法的对象自己
调用方法时,程序员不需要传递 self 参数
在方法内部
–>可以通过 self. 访问对象的属性
–>可以通过 self. 调用其他的对象方法

class Cat:
    def __inint__(self):
        print("这是一个初始化方法")

#  当使用 类名() 创建对象时,会自动执行以下操作
#  1.为对象在内存中 分配空间———— 创建对象
#  2.为对象的属性 设置初始值———— 初始化方法(init)
#
tom = Cat()

4 初始化方法——定义属性

class Cat:
    def __init__(self):
        print("这是一个初始化方法")
        
        # self.属性名 = 属性的初始值
        self.name = "Tom"
# 使用类名字()创建对象的时候,会自动调用初始化方法__init__
tom = Cat()

print(tom.name)

4 初始化方法——初始化方法的改进

class Cat:
    def __init__(self, new_name):
        print("这是一个初始化方法")

        # self.属性名 = 属性的初始值
        # self.name = "Tom"
        self.name = new_name

    def eat(self):
        print("%s 爱吃鱼" % self.name)

# 使用类名字()创建对象的时候,会自动调用初始化方法__init__
tom = Cat("Tom")
tom.eat()


lazy_cat = Cat("大懒猫")
lazy_cat.eat()

5内置方法和属性

del 方法

class Cat:

    def __init__(self, new_name):

        self.name = new_name

        print("%s 来了" % self.name)

    def __del__(self):

        print("%s 去了" % self.name)

# tom 是一个全局变量
tom = Cat("Tom")
print(tom.name)

str 方法

使用前

class Cat:
    def __init__(self, new_name):
        self.name = new_name
        print("%s 来了" % self.name)

    def __del__(self):
        print("%s 已经离开世界了" % self.name)

    # def __str__(self):
    #     # 必须返回一个字符串
    #     return "我是小猫[%s]" % self.name

tom = Cat("tom")
print(tom)

tom 来了
<main.Cat object at 0x103002438>
tom 已经离开世界了

使用后

class Cat:
    def __init__(self, new_name):
        self.name = new_name
        print("%s 来了" % self.name)

    def __del__(self):
        print("%s 已经离开世界了" % self.name)

    def __str__(self):
        # 必须返回一个字符串
        return "我是小猫[%s]" % self.name

tom = Cat("tom")
print(tom)

tom 来了
我是小猫[tom]
tom 已经离开世界了

 在 Python 中,使用 print 输出 对象变量,默认情况下,
 会输出这个变量 引用的对象 是 由哪一个类创建的对象,
 以及 在内存中的地址(十六进制表示)

如果在开发中,希望使用 print 输出 对象变量 时,
能够打印 自定义的内容,就可以利用 __str__ 这个内置方法了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值