PYTHON对象

PYTHON对象

  • 概念类比
实际情况 PYTHON
设计表格 设计类
打印表格 创建对象
填写表格 对象属性赋值
  • 类的属性称之为成员变量

  • 类的行为称之为成员方法

  • self关键字

    • 用来表示类对象自身
    • 在方法内部,想要访问类的成员变量,必须使用self
    • 可以在传参的时候忽略

构造方法

  • PYTHON类可以使用__init__()方法,称之为构造方法
  • 在创建类对象的时候会自动执行
  • 在创建类对象的时候将传入参数自动传递给__init__方法使用
# 例

class Student:
    name = None
    age = None
    tel = None

    def __init__(self,name,age,tel):
        self.name = name
        self.age = age
        self.tel = tel
        
stu = Student("小明",18,15811112222)

其他内置方法

  • 上文学习的__init__构造方法,是PYTHON类内置的方法之一
  • 这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为:魔术方法
  • 例:__init__、__str__(字符串方法)、__lt__(小于比较方法)、__le__(小于等于比较方法)、__eq__(比较运算符实现方法)

封装

  • 将现实世界事物再类中描述为属性和方法,即为封装

  • 私有成员:

    • 私有成员变量:变量名以__开头
    • 私有成员方法:方法名以__开头
  • 私有成员无法被类对象使用,但是可以被其他的成员使用

继承

  • 单继承
# 例

class People:
    name = None
    age = None
    tel = None

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

    def __str__(self):
        return f"姓名:{self.name},年龄{self.age}岁,电话{self.tel}"

class Student(People):
    grade = None

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

stu = Student("小明",18,15311112222,"大二")
print(stu)
  • 多继承
    • class 子类(父类1,父类2,...):
    • 若父类之间存在名字相同的成员,优先继承括号中靠左父类的成员

* pass:本身为空,让语法不产生错误

复写

  • 在子类中重新定义父类中同名的属性或方法
  • 如果需要使用被复写的父类成员,需要特殊的调用方式:
    • 父类.成员或方法(self)
    • super().方法或成员
  • 只能在子类内部调用父类的同名成员,子类的实体类对象调用默认是调用子类复写的

类型注解

  • PYTHON在3.5版本引入了类型注解,以方便静态类型检查工具,IDE等第三方工具

  • 类型注解:在代码中涉及数据交互的地方,提供数据类型的注解(显式的说明)

  • 类型注解仅仅是提示性的,不是决定性的

  • 支持:

    • 变量的类型注解
    • 函数(方法)形参列表和返回值的类型注解
  • 变量的类型注解:

    • 基础语法: 变量:类型
    • 在注释中使用类型注解的语法: # type:类型
  • 函数(方法)的类型注解:

    def 函数方法名(形参:类型,形参:类型,形参:类型...) -> 返回值类型:
    
  • Union类型:

    # 例
    from typing import Union
    my_dict: dict[str,Union[str,int]] = {"name":"小明","age":18}
    def func(data:Union[int,str]) -> Union[int,str]:
        pass
    

多态

  • 在完成某个行为时,使用不同的对象会得到不同的状态
# 例

class Animal:
    def speak(self):
        print("**************")

class Dog(Animal):
    def speak(self):
        print("汪汪汪")

class Cat(Animal):
    def speak(self):
        print("喵喵喵")

def make_noise(animal:Animal):
    animal.speak()

dog = Dog()
cat = Cat()
make_noise(dog)
make_noise(cat)

抽象类(接口)

  • 父类用来确定有哪些方法(pass),具体的方法实现由子类决定,这种写法叫做抽象类
  • 抽象类多用于顶层设计(设计标准),以便子类做具体实现
  • 对子类的软性约束,要求子类必须复写(实现)父类的一些方法
posted @ 2023-03-02 17:10  Learn1ng  阅读(46)  评论(0)    收藏  举报