Python 学习笔记(五)[面向对象]

本文详细解析了Python中类与对象的概念,包括类变量、实例变量、类方法、静态方法、实例方法、继承、多态及内建函数的使用。通过具体示例,阐述了这些概念在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量

类的变量

class A:
    num = 1
    
a = A()
# 1
a.num
# 1
A.num

# 修改类的变量值
A.num = 2
# 2
a.num

# 修改对象的变量值
a.num = 3
2
A.num

# 给对象添加属性
a.age = 10
# 没有
A.age

实例的变量

class A:
    def __init__(self):
        self.num = 1

a = A()

# 没有
A.num
# 1
a.num

函数

类的函数

class A:
    num = 1
    
    def func():
        print(num)
        
a = A()
# 报错,因为会自动把 a 作为参数,与函数参数不匹配
a.func()
# 报错,在 func() 中找不到 num
A.func()
class A:
    num = 1
    
    @classmethod
    def func(cls):
        print(cls.num)
        
a = A()
# 1
a.func()
# 1
A.func()
class A:
    num = 1
    
    @staticmethod
    def func():
        print(num)
        
# 报错,在 func() 中找不到 num
A.func()
class A:
    num = 1
    
    @staticmethod
    def func():
        a = 2
        print(a)

a = A()
b = A()
# 2
a.func()
# 2
b.func()
参数访问类变量访问实例变量
@classmethodcls可以不可以
@staticmethod不需要不可以不可以

实例的函数

class A:
    def func(self,x,y):
        return x + y;

a = A()
# 30
a.func(10,20)
# 没有
A.func(10,20)

继承

class A:
    @classmethod
    def func(cls):
        print('A')
        
class A1(A):
    pass
    
# A
A1.func()
# (<class 'object'>,)
print(A.__bases__)
# (<class '__main__.A'>,)
print(A1.__bases__)
class A:
    def __init__(self):
        self.num = 1
        print(self.num)
        
class A1(A):
    pass
    
# 1
a = A1()
class A:
    def __init__(self):
        self.num = 1
        print(self.num)
        
class A1(A):
    def __init__(self):
        self.num = 2
        print(self.num)
        
    def myfunc():
        print('this is my func')

# 2
a = A1()

多继承

class A:
    def __init__(self):
        print('A')
        
class B:
    def __init__(self):
        print('B')
        
class C(A,B):
    pass
    
# A
a = C()

多态

  • 目的:根据数据的类型执行不同的操作
  • 实现:子类重写父类的方法
class A:
    def func(self):
        print('A')
        
class B(A):
    def func(self):
        print('B')
        
a = A()
b = B()

# A
a.func()
# B
b.func()

# True
isinstance(a,A)
isinstance(b,B)
isinstance(b,A)
# False
isinstance(a,B)

# 多态
def myfunc(obj):
    obj.func()
    
# A
myfunc(a)
# B
myfunc(b)

内建函数

class A:
    def __call__(self):
        print('A')
        
a = A()
# A
a()
class A:
    # 构造函数(分配空间)
    def __new__(self):
        print('new')
        return super(A,self).__new__(self)
        
    # 数据初始化
    def __init__(self):
        print('init')
        
    # 销毁前(清理工作)
    def __del__(self):
        print('del')

# new
# init
a = A()
# del
del a
  • 限制属性
class A:
    __slots__ = ('name','age')
    
a = A()
a.name = 'abc'
a.age = 10
# 报错,属性范围中没有 school
a.schoole = 'haha'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值