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),具体的方法实现由子类决定,这种写法叫做抽象类
- 抽象类多用于顶层设计(设计标准),以便子类做具体实现
- 对子类的软性约束,要求子类必须复写(实现)父类的一些方法
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号