2024速通python之python面向对象

「章节总览」
 
      【2024速通python之python基础 https://blog.csdn.net/weixin_45404884/article/details/138578955】
      【2024速通python之python进阶 https://blog.csdn.net/weixin_45404884/article/details/138663338】
      【2024速通python之python高阶 https://blog.csdn.net/weixin_45404884/article/details/138810133】
      【2024速通python之python面向对象https://blog.csdn.net/weixin_45404884/article/details/139473507】
      【2024速通python之python高阶技巧https://blog.csdn.net/weixin_45404884/article/details/139521584】

一、类与对象

class Student:
    name = None
    age = None
    grade = None

    def say_hello(self):
        print(f"hello 我是:{self.name},我的年龄:{self.age},我的成绩:{self.grade}")


student = Student()
student.name = "lisi"
student.age = 18
student.grade = 99
student.say_hello()

二、构造方法

  • Python类可以使用:init()方法,称之为构造方法。
    可以实现:
    • 在创建类对象(构造类)的时候,会自动执行。
    • 在创建类对象(构造类)的时候,将传入参数自动传递给__init__方法使用。
    • 千万不要忘记init前后都有2个下划线
class Student:
    name = None
    age = None
    grade = None

    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade

    def say_hello(self):
        print(f"hello 我是:{self.name},我的年龄:{self.age},我的成绩:{self.grade}")


student = Student("lisi", 18, 99)
student.say_hello()

三、toString方法

class Student:
    name = None
    age = None
    grade = None

    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade

    def __str__(self):
        return f'{self.name}, {self.age}, {self.grade}'


student = Student("lisi", 18, 99)
print(student)

四、__eq__方法,相当于equals

class Student:
    name = None
    age = None
    grade = None

    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade

    def __eq__(self, other):
        return self.name == other.name and self.age == other.age and self.grade == other.grade


student1 = Student("lisi", 18, 99)
student2 = Student("lisi", 18, 99)
student3 = Student("lisi", 18, 98)
print(student1 == student2)
print(student1 == student3)

五、封装、继承与多态

1.封装

将现实世界事物在类中描述为属性和方法,即为封装。
类中提供了私有成员的形式来支持。

  • 私有成员变量
  • 私有成员方法

定义私有成员的方式非常简单,只需要:

  • 私有成员变量:变量名以__开头(2个下划线)
  • 私有成员方法:方法名以__开头(2个下划线)
    即可完成私有成员的设置
class Student:
    name = None
    age = None
    grade = None
    __number = None
    
    def __print_name(self):
        print(self.name)

2.继承

  • 单继承
    class 类名(父类名)
class smallStudent(Student):
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade
  • 多继承
    class 类名(父类名,父类名),默认以继承顺序(从左到右)为优先级
    即:先继承的保留,后继承的被覆盖
class small1Student(Student, smallStudent):
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade

3.重写

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员
如果需要使用被复写的父类的成员,需要特殊的调用方式:
方式1:
调用父类成员
使用成员变量:父类名.成员变量
使用成员方法:父类名.成员方法(self)

方式2:
使用super()调用父类成员
使用成员变量:super().成员变量
使用成员方法:super().成员方法()

class Phone:
    name = "Phone"
    number = None

    def print_name(self):
        print(self.name)

class myPhone(Phone):
    name = "myPhone"
    number = None

    def print_name(self):
        print(super().name)


print(Phone.name)

4.类型注解

不太明显的变量类型,采用加冒号的形式,确定他的类型

class Phone:
    name : str = "Phone"
    number : int = 12

5.多态

class Animal:

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print("I am a Dog")

class Cat(Animal):
    def speak(self):
        print("I am a Cat")

dog = Dog()
dog.speak()
cat = Cat()
cat.speak()

6.抽象类与抽象方法

上面示例中的pass,即声明了Animal的speak方法是抽象方法,所以Animal是抽象类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值