为了账号安全,请及时绑定邮箱和手机立即绑定
  • 改了之后就无法通过类去访问了,只能通过实例去访问。

    查看全部
  • Python 定义了__str()__和__repr__()两种方法,__str()__用于显示给用户,而__repr__()用于显示给开发人员,当使用str()时,实际调用的是__str__()方法,而直接输入变量,调用的是__repr__()方法。

    class Person(object):
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
        def __str__(self):
            return 'name: {}, gender: {}'.format(self.name, self.gender)
        def __repr__(self):
            return 'name: {}, gender: {}'.format(self.name, self.gender)
    
    bob = Person('Bob', 'Male')
    str(bob) # ==> 'name: Bob, gender: Male'
    >>> bob
    'name: Bob, gender: Male'


    查看全部
  • 要获取或者设置对象的属性,就需要用 getattr() 和 setattr( )函数了。

    查看全部
  • 在一条继承链上,一个实例可以看成它本身的类型,也可以看成它父类的类型。

    isinstance也可以用于Python自有数据类型的判断。

    查看全部
    0 采集 收起 来源:Python判断类型

    2020-10-14

  • 通过函数isinstance()可以判断一个变量的类型。

    查看全部
    0 采集 收起 来源:Python判断类型

    2020-10-14

  • 私有属性以双下划线__开头,私有属性只能在当前函数中被调用,不能被外部的函数调用。

    查看全部
  • 不要通过实例来修改类属性

    查看全部
  • 学了大半天,把__init__(self)写成了__int__(self),运行了大半天,始终报错,唉~~~

    查看全部
  • class Peple(object): pass

    xiaoming = Peple()

    xiaomai = Peple()

    类,这是区别于其它的运算符,如果没有定义类的前提下,xiaoming == xiaomai ,这个等式是相等的;当创建了类以后,我们进行实例化后,xiaoming != xiaomai,这个等式就不成立了。这是类的最大区别;每创建一个实例,它们都归属于这个类的不同实例,不相等;

    查看全部
  • 不能被外部访问的属性称为私有属性。私有属性是以双下划线'__'开头的属性。 # 类私有属性 class Animal(object): __localtion = 'Asia' print(Animal.__localtion) Traceback (most recent call last): File "", line 1, in AttributeError: type object 'Animal' has no attribute '__localtion'
    查看全部
  • 定义类属性可以直接在 class 中定义,比如在前面的Animal类中,加入地域的类属性:

    class Animal(object):
        localtion = 'Asia'
        def __init__(self, name, age):
            self.name = name
            self.age = age

    类属性也是可以动态添加和修改的,需要注意的是,因为类属性只有一份,所以改变了,所有实例可以访问到的类属性都会变更:

    Animal.localtion = 'Africa'
    print(cat.localtion) # ==>Africa
    print(dog.localtion) # ==>Africa


    查看全部
    0 采集 收起 来源:Python类属性

    2020-10-12

  • [::-1] 表示将字符串倒过来
    查看全部
  • 尽量不要通过实例来修改类属性,否则很容易引发意想不到的错误。
    查看全部
  • @log('DEBUG')
    def my_func():
        pass

    把上面的定义翻译成高阶函数的调用,就是:

    my_func = log('DEBUG')(my_func)

    上面的语句看上去还是比较绕,再展开一下:

    log_decorator = log('DEBUG')
    my_func = log_decorator(my_func)

    上面的语句又相当于:

    log_decorator = log('DEBUG')
    @log_decorator
    def my_func():
        pass


    查看全部
  • Python的 decorator 本质上就是一个高阶函数,它接收一个函数作为参数,然后,返回一个新函数。

    使用 decorator 用Python提供的 @ 语法,这样可以避免手动编写 f = decorate(f) 这样的代码。
    考察一个@log的定义:

    def log(f):
        def fn(x):
            print('call ' + f.__name__ + '()...')
            return f(x)
        return fn

    对于阶乘函数,@log工作得很好:

    @log
    def factorial(n):
        return reduce(lambda x,y: x*y, range(1, n+1))
    
    print(factorial(10))

    要让 @log 自适应任何参数定义的函数,可以利用Python的 args 和 *kwargs,保证任意个数的参数总是能正常调用:

    def log(f):
        def fn(*args, **kwargs):
            print('call ' + f.__name__ + '()...')
            return f(*args, **kwargs)
        return fn


    查看全部

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!