为了账号安全,请及时绑定邮箱和手机立即绑定
  • 注意:要想将文件写成多行,要在每一行的后面加上换行符\n

    查看全部
  • read(n)读取n个字符

    readline()读一行

    readlines(n)读n行,以列表形式返回


    读取一个文件,并把文件内容打印出来

    with open('requirements.txt','r') as f:
        lines = f.readlines()
        print(lines)
        txt = ''
        for line in lines:
            txt += line
        print(txt)
    ==>
    ['paddlepaddle==2.3.2\n', 'paddlenlp==2.4.1\n', 'regex\n', 'fastcore\n', 'scikit-image']
    paddlepaddle==2.3.2
    paddlenlp==2.4.1
    regex
    fastcore
    scikit-image

    注意:

    换行符也是字符!

    查看全部
  • 在Python中,模块(功能模块)就是一个.py文件

    查看全部
    0 采集 收起 来源:Python定义模块

    2024-09-01

  • __call__()

    工作原理:

    当你尝试以函数的方式调用一个对象时,Python会自动查找该对象的__call__()。

    class Fib(object):
        def __init__(self):
            pass
            
        def __call__(self,n):
            fib_list = []
            a,b = 0,1
            for i in range(n):
                fib_list.append(a)
                a,b = b,a+b
                
            return fib_list
    
    f = Fib()
    print(f(10))
    ==>
    [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

    f(10) == f.__call__(10)

    查看全部
  • Python是动态语言,实例可动态添加属性

    student.age = 12


    __slots__是一个特殊的内置类属性,用于限定实例属性

    用法:

    __slots__ = ('属性1', '属性2'...)

    class Person(object):
        __slots__ = ('name','gender')
        def __init__(self,name,gender):
            self.name = name
            self.gender = gender
            
    class Student(Person):
        __slots__ = ('score')
        def __init__(self,name,gender,score):
            super().__init__(name,gender)
            self.score = score
            
    s = Student('Alice','gril',27)
    s.age = 18
    ==>AttributeError

    __slots__的继承

    在上面的例子中,Student 类继承了 Person 类的 slots,同时额外定义了一个 score 属性。这意味着 Student 类的实例只能拥有 name、age 和 score 这三个属性。

    查看全部
  • Rational类的四则运算
    class Rational(object):
        def __init__(self, p, q):
            self.p = p
            self.q = q
    
        def __add__(self, r):
            return Rational(self.p * r.q + r.p * self.q, self.q * r.q)
    
        def __sub__(self, r):
            return Rational(self.p * r.q - r.p * self.q, self.q * r.q)
    
        def __mul__(self, r):
            return Rational(self.p * r.p, self.q * r.q)
    
        def __truediv__(self, r):
            return Rational(self.p * r.q, self.q * r.p)
    
        def __str__(self):
            return '{}/{}'.format(self.p, self.q)
    
    
    r1 = Rational(1, 2)
    r2 = Rational(2, 3)
    print(r1 + r2,r1-r2,r1*r2,r1/r2)
    ==>
    7/6 -1/6 2/6 3/4

    解释:

    1、r1 + r2 相当于 r1.add(r2)  r1调用__add__(self,r2)

    2、可以在实例方法中创建本类的实例对象

    查看全部
  • 对于内建对象(int, list, tuple, dict...),通过str()可以把对象转换为字符串对象输出

    num = 12
    str(num)  ==> '12'

    l = [1,2,3,4,5]
    str(l)  ==> '[1, 2, 3, 4, 5]'

    t = ('Alice',17)

    str(t) ==> '('Alice', 17)'

    d = {1: 1, 2: 2}
    str(d)  ==> '{1: 1, 2: 2}'


    对于自定义对象,需要重新定义内建方法__str__()输出你想输出的内容

    查看全部
  • 斐波那契数列是由 0, 1, 1, 2, 3, 5, 8...构成。

    请编写一个Fib类,Fib(10)表示数列的前10个元素,print Fib(10) 可以打印出数列的前 10 个元素,len(Fib(10))可以正确返回数列的个数10。

    class Fib(object):
        def __init__(self,n):
            self.fib_list = []
            a,b = 0,1
            for i in range(n):
                self.fib_list.append(a)
                a,b = b,a+b
                
        def __str__(self):
            return str(self.fib_list)
            
        def __len__(self):
            return len(self.fib_list)
            
    f = Fib(10)
    print(f)
    print(len(f))
    ==>
    [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
    10
    查看全部
  • 单继承

    class Person(object):
        def __init__(self, name, gender):
            self.name = name
            self.gender = gender
            
            
    class Teacher(Person):
        def __init__(self,name,gender,subject):
            super(Teacher,self).__init__(name,gender)        
            self.subject = subject
            
    t = Teacher('Bob','boy','english')
    print(t.name,t.gender,t.subject)
    ==>Bob boy english


    多重继承

    多重继承的目的是从两种继承树中分别选择并继承出子类,以便组合功能使用。
    举个例子,Python的网络服务器有TCPServer、UDPServer、UnixStreamServer、UnixDatagramServer,而服务器运行模式有多进程ForkingMixin和多线程ThreadingMixin两种。
    要创建多进程模式的 TCPServer:

    class MyTCPServer(TCPServer, ForkingMixin)
       pass

    要创建多线程模式的 UDPServer:

    class MyUDPServer(UDPServer, ThreadingMixin):
       pass

    如果没有多重继承,实现上述所有可能的组合需要 4x2=8 个类。


    例:

    已知类Student继承Person类,技能类BasketballMixin继承SkillMixin类,请通过多重继承,定义“会打篮球的学生”

    class Person(object):
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
    
    class SkillMixin(object):
        def __init__(self, club):
            self.club = club
    
    
    class BasketballMixin(SkillMixin):
        def __init__(self, club):
            super(BasketballMixin, self).__init__(club)
    
    
    class Student(Person, BasketballMixin):
        def __init__(self, name, age, score, club):
            super(Student, self).__init__(name, age, club)
            self.score = score
    
    
    s = Student('Alice', 17, 98, 'ax')
    print(s.name, s.age, s.score,s.club)
    class Student(Person, BasketballMixin):
        def __init__(self, name, age, score, club):
            super().__init__(name, age) #等于super(Student,self)...
            super(Person,self).__init__(club)
            self.score = score
    
    
    s = Student('Alice', 17, 98, 'ax')
    print(s.name, s.age, s.score,s.club)
    ==>Alice 17 98 ax

    错误理解:

    super().__init__() 会调用所有父类的__init__方法


    正确理解:

    super(type, object_or_type=None)

    object_or_type 确定要用于搜索的 method resolution order。 搜索会从 type 之后的类开始。

    举例来说,如果 object_or_type 的 __mro__ 为 D -> B -> C -> A -> object 并且 type 的值为 B,则 super() 将会搜索 C -> A -> object。

    查看全部
    0 采集 收起 来源:Python中的多态

    2024-09-01

  • isinstance(变量, 类型)判断变量是否为该类型

    例:

    isinstance(2,int)==>True

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

    2024-08-31

  • 操作实例的私有属性

    ==>定义实例方法  

    class Person(object):
    
        def __init__(self, name):
            self.__name = name
    
        def get_name(self):
            return self.__name
            
        def set_name(self,name):
            self.__name = name
            
    p = Person('Alice')
    print(p.get_name())
    p.set_name('Bob')
    print(p.get_name())
    
    ==>
    Alice
    Bob
    查看全部
  • 操作类的私有属性

    ==>定义类方法  

    class Animal(object):
        __count = 0
        
        @classmethod
        def get_count(cls):
            return cls.__count
            
        @classmethod
        def set_count(cls,count):
            cls.__count = count
        
    print(Animal.get_count())
    Animal.set_count(2)
    print(Animal.get_count())
    ==>
    0
    2

    和实例方法不同的:

    1、需要使用@classmethod来标记为类方法,否则定义的还是实例方法

    2、类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.__localtion 实际上相当于Animal.__localtion。

    查看全部
  • 私有属性:以双下划线'__'开头


    # 类私有属性
    class Animal(object):
       __localtion = 'Asia'

    print(Animal.__localtion)

    ==>type object 'Animal' has no attribute '__localtion'


    # 实例私有属性
    class Animal(object):
       def __init__(self, localtion):
           self.__localtion = localtion

    dog = Animal('GuangDong')
    print(dog.__localtion)

    ==>'Animal' object has no attribute '__localtion'

    查看全部
  • 请给 Animal类添加一个类属性 count,每创建一个实例,count 属性就加 1,这样就可以统计出一共创建了多少个 Animal的实例。

    class Animal(object):
        count = 0
        def __init__(self):
            count += 1
            
    dog = Animal()
    cat = Animal()
    print(Animal.count)
    ==>local variable 'count' referenced before assignment
    class Animal(object):
        count = 0
        def __init__(self):
            Animal.count += 1
            
    dog = Animal()
    cat = Animal()
    print(Animal.count)
    ==>2

    问:

    为什么在类方法中不能直接访问类属性,而是要通过"类.类属性"?

    答:

    如果你不加“类.”,他会认为count是__init__方法中的一个局部变量,就会出现上面的错误:变量count未定义就使用

    所以请注意:

    在类方法中引用类属性也要通过"类.类属性"的方式!!!

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

    2024-08-31

  • 类方法的第一个参数必须是self,但是在调用时不必传入相应的参数。

    self指的是类实例对象本身,不是类本身。

    查看全部

举报

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

微信扫码,参与3人拼团

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

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