python面向对象基础语法

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Katherine_hsr/article/details/82192469

定义简单的类

  1. 定义只包含方法的类
class 类名:
    def 方法1(self, 参数列表):
        pass
    def 方法2(self, 参数列表):
        pass

方法的定义格式几乎和函数一样,但是第一个参数必须是self, 类名的命名规则要符合大驼峰命名法并且类名第一个字母要大写
2. 创建对象

对象变量 = 类名()
  1. 简单的面向对象例子
    例如我们要定义一个Cat类,其中有两个方法eat和drink,则可以这样定义并使用一个类:
class Cat:

    def eat(self):
        print("eat fish")
    def drink(self):
        print("drink water")

tom = Cat()
tom.drink()
tom.eat()

python 中使用类创建对象之后会在内存中为该对象分配存储空间,tom变量中记录的是对象在内存中的地址,也就是说tom变量引用了新建的Cat对象
4. 使用Cat类创建多个Cat对象

class Cat:

    def eat(self):
        print("eat fish")
    def drink(self):
        print("drink water")

tom = Cat()
tom.drink()
tom.eat()

print(tom)

# 创建第二个对象
lazy_cat = Cat()
lazy_cat.drink()
lazy_cat.eat()

print(lazy_cat)

这里写图片描述
虽然两个Cat对象引用的是同一个Cat类,但是输出的两个地址是不同的,说明两个对象不是同一个对象。
4. 方法中的self属性
如果想要给对象临时增加一个属性,只需要在类的外部的代码中直接通过.设置一个属性即可,但是不推荐使用

tom.name = "TOM"

lazy_cat.name = "lazy cat"

5 . 使用 self 在方法内部输出每一只猫的名字
由哪一个对象调用的方法,方法内的 self 就是哪一个对象的引用,
在类的外部,通过变量名. 访问对象的属性和方法
在类封装的方法中,通过self. 访问对象的属性和方法

class Cat:

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

tom = Cat()
tom.name = "Tom"
tom.eat()

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

这里写图片描述
但是在日常开发中,不推荐在类的外部给对象增加属性,对象应该包含哪些属性应该封装在类的内部。
6. 初始化方法
使用类名创建对象时,会自动执行以下方法:
(1)为对象在内存中分配空间——创建对象
(2)为对象的属性设置初始值——初始化方法(init)
init方法是专门用来定义一个类具有哪些属性的方法

class Cat:

    def __init__(self):
        print("this is a initial method")

tom = Cat()

执行以上代码,会打印出来this is a initial method
7. 在初始化方法内部定义属性
init 方法内部使用self.属性名 = 属性的初始值就可以定义属性
定义属性之后,再使用 Cat 类创建的对象,都会拥有该属性

class Cat:

    def __init__(self):
        print("this is a initial method")

        self.name = "Tom"

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

tom = Cat()
tom.eat()
  1. 改造初始化方法 —— 初始化的同时设置初始值在开发中,如果希望在 创建对象的同时,就设置对象的属性,可以对 init 方法进行改造,
    (1) 把希望设置的属性值,定义成 init 方法的参数
    (2) 在方法内部使用 self.属性 = 形参 接收外部传递的参数
    (3) 在创建对象时,使用类名(属性1, 属性2)进行调用
class Cat:
    def __init__(self, name):
        print("this ia an initial method")
        self.name = name

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

tom = Cat("Tom")
tom.eat()
  1. del方法
    在python中,当使用类名创建对象时,当为对象分配完空间时,会自动调用init方法,当一个对象被从内存中销毁前,会自动调用del方法。
    一个对象的生命周期是从类名()创建开始的,到del方法调用后结束,在对象的生命周期内,可以访问对象的属性或者让对象调用方法。
class Cat:
    def __init__(self, name):
        self.name = name
        print("%s 初始化" % self.name)

    def __del__(self):
        print("%s 结束" % self.name)

tom = Cat("Tom")

tom.name
# del可以删除一个对象
del tom

打印结果如下:
这里写图片描述
10. str方法
在python中使用print方法输出对象变量默认情况下会输出对象是由哪一个类创建的对象以及在内存中的地址(十六进制表示),如果我们希望用print输出对象变量时能够自动打印定义的内容就可以使用str方法。


class Cat:
    def __init__(self, name):
        self.name = name
        print("%s 初始化" % self.name)

    def __del__(self):
        print("%s 结束" % self.name)

    def __str__(self):
        return "我是小猫:%s" % self.name

tom = Cat("Tom")

tom.name

print(tom)

del tom

输出一下结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/Katherine_hsr/article/details/82192469
今日推荐