【Python】类和对象


类: 类是一个模板,描述一类对象的行为和状态。 有了模板我们就可以根据这个模板创建具体的对象。
对象: 对象是类的一个具体实例,有状态和行为。

class 类名称:  
    类的属性
    类的行为
# 其中 class是关键字,表示要定义类
# 类的属性,即定义在类中的变量
#  类的行为,即定义在类中的函数

例如:

# 创建Student类
class Student:
    name = None
    age = None
    # 此处self表示类对象本身,若要访问类的成员变量时,需要通过self. 
    # 例如 self.name,self在形参列表中,但是不占用具体的参数位置
    # 调用方法时可不用管,例如:stu.sayHi()
    def sayHi(self):
        print(f"Hello, 我的名字是{self.name}")

# 实例化一个 Student 对象
stu = Student()
stu.name = "张三"
stu.age = 20
stu.sayHi()

运行结果:
在这里插入图片描述

构造方法

当类里的属性太多时,如果再通过 对象.属性 来赋值,会略显繁琐,因此我们可以使用 构造方法 __init__() 来完成,创建对象时,会将传入的参数自动传递给构造方法使用,构造方法会自动执行。例如:

class Student:
# 使用构造方法时,类里的属性可以省略,self. 会自动定义
    name = None
    age = None
    # __init__ 两边都是两个下划线
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print("使用构造方法初始化一个对象")
    def sayHi(self):
        print(f"Hello, 我的名字是{self.name}")

stu1 = Student("张三",22)
stu1.sayHi()

运行结果:
在这里插入图片描述


__str()__,类似 Java 里的 toString() 方法:

在这里插入图片描述

封装

封装就是将一系列属性或方法给隐藏起来,外部对象不能直接使用,就像手机里的各种软硬件,无需知道他们如何实现,他们内部之间可能互相调用,但外部需要通过封装好的接口来使用。
用两个下划线开头,声明该方法为私有方法,属性为私有属性,只能在类的内部调用,不能在类的外部调用。例如:

class Student:
    __name = None
    __age = None # 私有变量
    sex = None  # 公有变量
    def __init__(self, name, age, sex):
        self.__name = name
        self.__age = age
        self.sex = sex
    def __say(self):
        print("Hello My name is " + self.__name)

stu1 = Student("张三",22,"男")
print(stu1.sex) # 可以访问
print(stu1.__age)   # 报错,不能访问

在这里插入图片描述

但是可以调用公有方法:

在这里插入图片描述

继承

当一个新的类和一个已有的类 功能属性 差不多时,我们就可以使用继承,如 类B 继承了 类A,那么 类B 就拥有了和 类A 一样的属性方法,类A 保持不变,这样我们就无需再重新设计 类B 了。例如各大手机厂商,大多情况下只会在上一代手机基础上增加一些新功能,而不是重新设计外表功能等。继承格式:

class 类名(父类名):
	类内容体

例如:

class Phone:
    name = "一代手机"
    def __init__(self, name):
        self.name = name
    def message(self):
        print(f"{self.name}可以发送短信")
class Xiaomi(Phone):
    def call(self):
        print(f"{self.name}可以打电话")
class Huawei(Phone):
    def call(self):
        print(f"{self.name}可以发视频")

xiaomi = Xiaomi("小米")
# 一代手机功能
xiaomi.message()
# 自己的功能
xiaomi.call()

Huawei = Huawei("华为")
Huawei.message()
Huawei.call()

在这里插入图片描述

若对父类功能不满意,也可以覆盖父类的方法:

class Phone:
    name = "一代手机"
    def __init__(self, name):
        self.name = name
    def message(self):
        print(f"{self.name} 可以发送短信")

class Phone2(Phone):
	# 重写父类方法
    def message(self):
        print(f"{self.name} 不仅可以发送短信,还可以发邮箱")

phone = Phone2("二代手机")
phone.message()

在这里插入图片描述
当然也可以两个同时使用:
在这里插入图片描述

多继承

可以继承多个类。

class 类名(父类名1,父类名2...:
	类内容体
class Phone:
    name = "一代手机"
    def __init__(self, name):
        self.name = name
    def message(self):
        print(f"{self.name} 可以发送短信")
class Computer:
    def __init__(self, name):
        self.name = name
    def office(self):
        print(f"{self.name} 可以办公")


class Pingban(Phone,Computer):
# 继承了 Phone和 Computer,所以拥有 Phone类 和 computer类的方法和属性
    def game(self):
        print(f"{self.name} 可以打游戏")

pingban = Pingban("平板")
pingban.message()
pingban.office()
pingban.game()

在这里插入图片描述

多态

多态 指的是多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。具体请看例子:

class Animal:
    def __init__(self, name):
        self.name = name
        
    def speak(self):
        pass  # 不想实现具体方法可以使用 pass关键字

    def eat(self):
        pass

class Dog(Animal):
    def speak(self):
        print(f"{self.name} 汪汪叫")

    def eat(self):
        print(f"{self.name} 吃骨头")

class Cat(Animal):
    def speak(self):
        print(f"{self.name} 喵喵叫")

    def eat(self):
        print(f"{self.name} 吃鱼肉")

def pet(animal):
    animal.speak()
    animal.eat()

cat = Cat("小猫")
dog = Dog("小狗")
pet(cat)
print("=========")
pet(dog)

在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值