类
定义:是对具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
三要素:类名,属性,方法
定义类的语法格式
class 类名:
定义方法
定义只包含方法的类:
class 类名:
def 方法1(self,参数列表):
pass
def 方法1(self,参数列表):
pass
例子:
class Dog:
def eat(self):
print("修狗吃饭")
def sleep(self):
print("修狗睡觉")
dog = Dog()
dog.eat()
结果
self参数
说明:由哪一个对象调用的方法,方法内的self就是哪一个对象的引用
例子:
下面一个例子,打印出self的id,调用方法对象的id,完全一致
代码
# 定义一个Dog类,定义一个name属性和est方法
class Dog:
def __init__(self):
self.name = None
def eat(self):
print(f"self:{id(self)}")
print("修狗吃饭")
# 实例化一个dog对象,调用eat方法
dog = Dog()
print(f"dog:{id(dog)}")
dog.eat()
结果
初始化方法
__init__方法(init两边是两个下划线)
作用:创建对象时会自动调用,是对象的内置方法,用来定义类具有哪些属性
当使用 类名()创建对象时,会自动执行以下操作:
- 为对象分配内存空间
- 为对象的属性设置初始值
例子:
# 定义一个Dog类,定义一个name属性和est方法
class Dog:
def __init__(self):
print("执行初始化方法。。。")
self.name = "修狗"
def eat(self):
print("调用eat方法。。。")
print(f"{self.name} 喜欢吃罐头")
# 实例化一个dog对象,调用eat方法
dog = Dog()
dog.eat()
结果
如果希望在实例化对象的时候,能直接传参,需要在__init__方法里面设置参数来接受
比如__init__(self,name),实例化时可以直接传入name值
例子
# 定义一个Dog类,定义一个name属性和est方法
class Dog:
def __init__(self, name):
print("执行初始化方法。。。")
self.name = name
def eat(self):
print("调用eat方法。。。")
print(f"{self.name} 喜欢吃罐头")
# 实例化一个dog对象,调用eat方法
dog = Dog("小猫")
dog.eat()
结果
dir()函数
用法: dir(对象变量)
作用:可以查看对象内的所有属性及方法
注意:dir()函数不具备输出功能,需要和print()函数配合使用
例子
# 定义一个Dog类,定义一个name属性和est方法
class Dog:
def __init__(self, name):
print("执行初始化方法。。。")
self.name = name
def eat(self):
print("调用eat方法。。。")
print(f"{self.name} 喜欢吃罐头")
# 实例化一个dog对象,调用eat方法
dog = Dog("小猫")
print(dir(dog))
结果
执行初始化方法。。。
[‘class’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getstate’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘le’, ‘lt’, ‘module’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘weakref’, ‘eat’, ‘name’]
注意:打印出了对象包括的内置函数
__str__方法(str两边为两个下划线)
作用:返回一个字符串数据,类似于java中的tostring方法
说明:不实现str方法时,使用print()函数打印对象时,会输出对象的内存地址信息,如果想自定义打印对象变量时,可以重写str方法
例子
未重写str方法时:
# 定义一个Dog类,定义一个name属性和est方法
class Dog:
def __init__(self, name):
print("执行初始化方法。。。")
self.name = name
# 实例化一个dog对象,调用eat方法
dog = Dog("花猫")
print(dog)
结果:
执行初始化方法。。。
<main.Dog object at 0x0000000003B846D0>
重写str方法时:
# 定义一个Dog类,定义一个name属性和est方法
class Dog:
def __init__(self, name):
print("执行初始化方法。。。")
self.name = name
def __str__(self):
return f"我是小猫,名字:{self.name}"
# 实例化一个dog对象,调用eat方法
dog = Dog("花猫")
print(dog)
结果
执行初始化方法。。。
我是小猫,名字:花猫
对象
定义:是由类创建出来的一个具体的事物,可以直接使用
说明:在python中由类创建对象的操作又被称为实例化
面向对象的三大特征
继承
多态
封装