为了账号安全,请及时绑定邮箱和手机立即绑定
  • 1、如果类属性和实例属性名字相同时,实例属性的优先级要高于类属性

    2、通过实例无法修改类的属性

    查看全部
    1. 如果希望导入模块的指定部分属性或函数,那么使用from...import...语句。

    2. 使用from ... import as ...语句,as类似重命名,可以把导入的函数或属性重命名为别的名字。

    查看全部
    0 采集 收起 来源:Python导入模块

    2023-11-29

    1. 如果把一个类实例也变成一个可调用对象,可以实现一个特殊的方法__call__()


    • >>> p = Person('Bob', 'Male')
      >>> p('Alice') # ==> 用函数的方式调用Person类的实例p

    查看全部
    1. 由于Python是动态语言,任何实例在运行期都可以动态地添加属性。

    2. 如果要限制添加的属性,就可以利用Python的一个特殊的__slots__来实现。


    查看全部
    1. __add__、__sub__、__mul__、__truediv__   加减乘除


    • class Rational(object):
         def __init__(self, p, q):
             self.p = p
             self.q = q
         def __add__(self, r):
             return Rational(self.p * r.q + self.q * r.p, self.q * r.q)
         def __str__(self):
             return '{}/{}'.format(self.p, self.q)

    • (1)p分子,q分母

    • (2)self.p * r.q + self.q * r.p  新分子 = (当前分子 * 另一个分母) + (当前分母 * 另一个分子)

    • (3)self.q * r.q分母乘分母

    • (4)将新分子分母替换原来的p,q


        2.地板除的特殊方法是__floordiv__,普通除法是__truediv__。地板除法和普通除法不一样,地板除法的结果只会向下取整数

        3.在运算中,普通除法使用/表示,而地板除使用//表示。

    查看全部
    1. 对于列表List或者元组Tuple,通过内建方法len(),可以得出列表或者元组中元素的个数

    2. 如果一个类表现得像一个list,想使用len()函数来获取元素个数时,则需要实现__len__()方法

    查看全部
    1. 对于Python的内建对象,比如int、dict、list等,通过str()方法,可以把这些对象转换为字符串对象输出。


    #########################################################

    class Person:
       pass

    bob = Person()
    str(bob) # ==> '<__main__.Person object at 0x7fc77b859c50>'

    #########################################################

    (1)<__main__.Person object at 0x7fc77b859c50>这个结果其实是Animal的实例cat在内存中的地址


         2.如果我们的类也想把容易理解的字符串输出的话,那么我们也需要实现类的            __str__()方法。

         3.当我们直接打印实例化对象的时候,调用的是__str__方法(用户)的返回            结果,当我们在终端中调用实例化对象的时候,得到确实__repr__ 方 法        (开发者)的返回结果。

    查看全部
    1. 通过type()函数,可以获得变量的类型。

    2. 通过dir()方法,可以获取变量的所有属性。

    3. 在dir列出的属性中,有很多是以下划线开头和结尾的,这些都是特殊的方法,称为内建方法。


    ########################################################

    class Person(object):
       def __init__(self, name, gender):
           self.name = name
           self.gender = gender
       def who(self):
           return 'I am a Person, my name is {}'.format(self.name)

    p = Person('Alice', 'Female')
    dir(p)

    ########################################################

    对于实例变量,dir()返回所有实例属性,包括__class__这类有特殊意义的属性。注意到方法who也是p的一个属性。


        4.dir()返回的属性是字符串列表,如果已知一个属性名称,要获取或者设置对象          的属性,就需要用 getattr() 和 setattr( )函数了。

        (1)getattr() :获取某一对象属性

        (2) setattr( ):设置新的属性

    查看全部
  • 在定义继承类的时候,有几点是需要注意的:

    1.class Student()定义的时候,需要在括号内写明继承的类Person

    2.在__init__()方法,需要调用super(Student, self).__init__(name, gender),来初始化从父类继承过来的属性

    查看全部
    0 采集 收起 来源:Python继承类

    2023-11-23

    1. 如果需要操作类的私有属性,则应该定义类的方法。

    2. 默认的,在class中定义的全部是实例方法。

    3. 和实例方法不同的是,这里有两点需要特别注意:

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

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


    查看全部
    1. 那如果外部需要操作私有属性怎么办?这个时候可以通过定义类或者实例的方法来操作私有属性

    2. 实例的方法指的就是在类中定义的函数

    3. 实例方法的第一个参数永远都是self,self是一个引用指向调用该方法的实例对象本身

        4.#####################

     class Person():

       def __init__(self,name):
           self.__name = name #name是私有的

       def get_name(self):
           return self.__name  #实例方法操作私有属性


    p = Person('Alice')
    print(p.get_name()) # ==> Alice
    #####################################

         (1)__init__(self, name)其实也可看做是一个特殊的实例方法

         (2)通过定义get_name(self)方法,在外部就可以通过这个方法访问私有属性了。

         5.通过定义实例方法来操作私有属性这种数据封装的形式除了能保护内部数据一         致性外,还可以简化外部调用的难度。

         6.实例方法并不仅仅是为私有属性服务的,我们可以把和类的实例有关的操作

            都抽象成实例方法       比如:打印实例的详细信息等等。

    查看全部
    0 采集 收起 来源:Python定义实例方法

    笔记审核中笔记正在审核中,仅自己可见 2023-11-22

    1. 私有属性是以双下划线'__'开头的属性。

    2. 私有属性是为了保护类或实例属性不被外部污染而设计的。

    查看全部
    1. 在类属性和实例属性同时存在的情况下,实例属性的优先级是要高于类属性的


    查看全部
  • # Enter a code

    class Person(object):

       pass


    class Student(Person):

        def __init__(self, name, age):

            self.name = name

            self.age = age


    class Teacher(Person):

        def __init__(self, name, age):

            self.name = name

            self.age = age


    class SkillMixin(object):

        pass

        

    class BasketballMixin(SkillMixin):

        def skill(self):

            return 'basketball'

            

    class FootballMixin(SkillMixin):

        def skill(self):

            return 'football'

            

    class Basketball_Student(Student,BasketballMixin):

        def __init__(self,name,age):

            super(Basketball_Student,self).__init__(name,age)


    class Football_Teacher(Teacher,FootballMixin):

        def __init__(self,name,age):

            super(Football_Teacher,self).__init__(name,age)


    s = Basketball_Student('eric',24)

            

    print('I am {},I like playing {}'.format(s.name,s.skill()))

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

    2023-10-31

  • 和实例方法不同的是,这里有两点需要特别注意:

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

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

    查看全部

举报

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

微信扫码,参与3人拼团

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

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