python进阶第一节课:深入类和对象

本文详细探讨了Python中的类和对象,包括魔法函数的使用,如__getitem__、__str__和__repr__,以及数学运算方法。讨论了鸭子类型和多态的概念,解释了type与isinstance的区别。还深入讲解了类属性、实例属性的查找顺序,以及类方法、实例方法、静态方法的案例。此外,文章还介绍了Python的super函数、对象自省机制和抽象基类的应用。
摘要由CSDN通过智能技术生成

一、一切皆对象

  • python中的函数和类也是对象
# 判断函数和类是不是一个对象
# 方法一:
def func(name='jr'):
    print(name)  # juran


if__name__ == '__main__':
    my_func = func
    my_func('juran')
    # isintance判断一个参数是否是某个类型
    # 判断my_func是否是一个对象
    print(isintance(my_func,object))  # True

    
# 方法二:
def func(name='jr'):
    print(name)
    

class Func(object):
    def __init__(self,name='jr1'):
        print(name)
        # 一个方法没有返回值,直接打印就是Nome
        
        
if __name__ == '__main__':
    my_func = func
    li = []
    li.append(my_func)
    li.append(Func)
    print(li) # [<function func at 0x00000171AC7960D0>, <class '__main__.Func'>] 方法和类
    for i in li:
        print(i())
        # jr
          None
          jr1  #实例化的类
          <__main__.Func object at 0x0000019F9F483910> # __init__实例化后生成的

二、魔法函数

2.1 __getitem__方法

# 方法1:
class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list


company = Company(["tom", "bob", "jane"])

for i in company.employee:
    print(i)  
    # tom bob jane

# 方法2:
class Company(object):
    def __init__(self, employee_list):
        self.employee = employee_list
    
    # __getitem__可以帮助类进行循环
    def __getitem__(self, item):
        print(item)
        return self.employee[item]


company = Company(["tom", "bob", "jane"])

for i in company:
    print(i)  
    #0 tom 1 bob 2 jane 3

方法1中类进行循环需要加入属性employee,方法2中加入了__getitem__魔法方法可以帮助类直接进行循环,不用加入属性。

2.2 str__和__repr

# str
class Jr(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
     
    # __str__可以把类变成字符串进行输出
    def __str__(self):
        return "name:%s,age:%s" %(self.name,self.age)
    
jr = Jr('juran',18)
print(jr)  # name:juran,age:18

# repr
class Jr(object):
    def __init__(self,name,age):
        self.name = name
        self.age = age
     
    # __repr__可以把类变成字符串进行输出
    def __repr__(self):
        return "name:%s,age:%s" %(self,name,age)
    
jr = Jr('juran',18)
print(ji
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值