Python3进阶-3-常用的函数 type、dir、isinstance、setttr、getttr、format、len、str...

avatar 2024年03月18日16:54:22 0 116 views
博主分享免费Java教学视频,B站账号:Java刘哥

继续更新,本篇介绍Python常用的方法

包括 type、dir、isinstance、setttr、getttr、format、len、str、重写__str__、__slots__、__call__

完整代码:https://github.com/saysky/python_demo

直接看代码注释

# Python 3.7.4
class Goods:  # 商品类
    def __init__(self, name, price):
        self.name = name
        self.price = price

    def sayHello(self):
        print('Hello', self.name, self.price)


g = Goods('小米14', 4399)
g.sayHello()

# 1. type 获取变量的类型
print(type(g))
print(type(g.name))

# 2. dir 获取变量所有属性或方法
print(dir(g))

# 3.isinstance 判断类型
print(isinstance(g, Goods))  # 如果继承了父类,判断是不是父类,也为True

# 4. setattr 设置属性
setattr(g, 'name', '小米14 Pro')  # 给name属性赋值

# 5. getattr 获取属性
print(getattr(g, 'name'))


# 6.**kw 可变参数
class Person(object):
    def __init__(self, **kw):
        for k, v in kw.items():
            setattr(self, k, v)


p = Person(name='言曌', age=18, sex='男')
print(p.name, p.age, p.sex)

# 7.format 字符串格式化
print('name={}, age={}'.format('言曌', 18))

# 8. len 获得列表长度
list = [1, 2, 3]
print(len(list))

# 9. str 转成字符串
num = 3.14
print(num, str(num), str(list))


# 10. 重写 __str__
class Person2:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # def __str__(self):
    #     return 'name: {}, age: {}'.format(self.name, self.age)


p2 = Person2('言曌', 18)
#  print 底层调用的 __str__方法
print(p2)  # 如果不重写 __str__,默认打印 <__main__.Person2...>


# 11. __slots__ 设置限制属性,不允许动态添加或访问其他属性
class Person3:
    __slots__ = ('name', 'age')

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


p3 = Person3('言曌', 18)


# p3.sex = '男' 会报错,p2.sex = '男' 不会报错

# 12. __call__ 把一个实例也变成一个可调用对象
class Person4:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __call__(self, name):
        print('你好啊! {}'.format(self.name))


p4 = Person4('言曌', 18)
p4('张三')  # 相当于p4.__call__('张三')的缩写

 

完整代码:https://github.com/saysky/python_demo

test8

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0