python面向对象

定义:是对具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用
三要素:类名,属性,方法

定义类的语法格式

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两边是两个下划线)
作用:创建对象时会自动调用,是对象的内置方法,用来定义类具有哪些属性
当使用 类名()创建对象时,会自动执行以下操作:

  1. 为对象分配内存空间
  2. 为对象的属性设置初始值

例子:

# 定义一个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中由类创建对象的操作又被称为实例化

面向对象的三大特征

继承

多态

封装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值