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__ 这个内置方法了