为了账号安全,请及时绑定邮箱和手机立即绑定
    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. 私有属性是为了保护类或实例属性不被外部污染而设计的。

    查看全部
    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。

    查看全部
  • class Fib(object):

        def __init__(self):

            self.array = []

           

        def __call__(self, num):

            if(num == 1):

                self.array = [1]

            elif(num == 2):

                self.array = [1, 1]

            else:

                self.array = [1, 1]

                for i in range(2, num):

                    a = self.array[i - 1]

                    b = self.array[i - 2]

                    self.array.append(a + b)

            return self.array[:num]


    f = Fib()

    print(f(10))

    查看全部
  • 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)

        def __sub__(self, r):

            return Rational(self.p * r.q - self.q * r.p, 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)


    r1 = Rational(1, 2)

    r2 = Rational(1, 5)

    print(r1 + r2)

    print(r1 - r2)

    print(r1 * r2)

    print(r1 / r2)

    查看全部
  • class Fib(object):

        def __init__(self,n):

            self.n = n

            self.fib_list = [1,1]

            if n == 1:

                self.fib_list=[1]

            elif n == 2:

                self.fib_list=[1,1]

            else:

                for i in range(2, n):

                    if(i == len(self.fib_list)):

                        self.fib_list.append(self.fib_list[i - 1] + self.fib_list[i - 2])

        def __str__(self):

            return str(self.fib_list)

        def __len__(self):

            return len(self.fib_list)

       

    print(Fib(10))

    print(len(Fib(10)))

    print(len(Fib(10)))

    查看全部
  • class Person(object):

        def __init__(self, name, gender):

            self.name = name

            self.gender = gender


    class Student(Person):

        def __init__(self, name, gender, score):

            super(Student,self).__init__(name, gender)

            self.score = score

        def __str__(self):

            return f'name:{self.name},gender:{self.gender},score:{self.score}'

        def __repr__(self):

            return self.__str__()


    p = Person('Bob','Male')

    s = Student('Bob','Male',88)


    print(s)

    查看全部

举报

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

微信扫码,参与3人拼团

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

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