【python进阶2】类和对象

类和对象的基础语法

[python官方文档](8. 复合语句 — Python 3.12.4 文档)

  • 类的定义
    • python中类使用关键字class定义
'''
class 类名(继承):
    实例方法
'''
class Person:
    pass
  • 实例化对象
'''
变量名 = 类名()
'''
A = Person()
  • 构造函数
    • 实例化类对象时自动调用
class Person:
    def __init__(self):
        print('创建对象时构造函数执行')

对象是类的实例,具有类定义的属性和方法

实例可以调用类方法和实例方法

实例可以访问类变量和实例变量

  • self
    • self是类的实例方法中的参数,用来指代这个实例自己
class Person:
    def __init__(self,name):
        self.name = name
    def say(self):
        print(self.name)

属性和方法

  • 属性

    • 属性可以记录每个对象自身的数据
    • 使用实例.属性名调用
  • 方法

    • 实例方法实质是一个函数,定义在类里面的函数
    • 实例.类方法调用
  • 类属性

    • 类属性是属于类的属性,用来存储共有属性
    • 可以使用类和实例访问
class Person:
    g = 'China'
    def __init__(self,name):
        self.name = name
        
a = Person('zhang')
print(Person.g)
print(a.g)
  • 类方法
    • 使用@classmethod装饰器定义的方法
    • cls为第一个形参,绑定类
    • 类和实例都可以调用
    • 不能访问对象的实例属性
    • cls 访问类属性,调用类方法,创建类实例
class Person:
    g = 'China'
    def __init__(self,name):
        self.name = name
    
    @classmethod
    def change_g(cls):
        cls.g = '中国'
a = Person('zhang')
Person.change_g()
a.change_g()
print(Person.g)
print(a.g)
  • 静态方法
    • 使用@staticmethod装饰定义在类里的函数
    • 不用传递cls和self参数
    • 不能访问实例属性可以访问类属性
class Person:
    g = 'China'
    def __init__(self,name):
        self.name = name
    
    @classmethod
    def change_g(cls):
        cls.g = '中国'
        
    @staticmethod
    def chang():
        Person.g = 'China'
a = Person('zhang')
Person.change_g()
a.change_g()
print(Person.g)
print(a.g)
a.chang()
print(a.g)
  • 初始化方法
    • init 创建对象时自动执行
class Person:
    def __init__(self,name):
        self.name = name 
a = Person('zhang')
  • 魔法方法
    • 是python中的特殊方法,以双下划线开头和结尾的,可以自定义类的行为,可以和内置和函数,运算符交互
'''__init__(self) 初始化实例方法
__len__(self)  定义对象的长度
__getitem__(self) 定义对象的索引操作
__iter__(self) 定义迭代器对象
__next__(self)定义迭代器的下一个元素'''

继承

  • 从已有的类中继承出新的类,新的类具有原类的数据属性和函数
  • 单继承,由一个基类衍生而来
  • 多继承,继承多个类,方法同名默认调用参数位置靠前的父类
  • 覆盖,子类实现了和基类同名方法,调用时调用子类的方法
  • 封装
    • 私有属性和私有方法 使用双下划线开头的为私有属性或方法
    • 只能私有成员能访问和修改

多态

继承的类可以使用方法覆盖父类的方法,实际调用时使用的时子类的方法

class Person:
    def say(self):
        print('hello')
class Student(Person):
    def say(self):
        print('hello hello')
class work(self):
    def say(self):
        print('OK收到')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值