推荐使用的派生方法:super().__init__()

"""
推荐使用的派生方法:super().__init__()

--super(),严格继承属性查找顺序

--super(),会得到一个特殊的对象,该对象就是专门用来
访问父类中的属性的(严格按照继承的关系)

--super().__init__(),此处__init__(),
括号中不需要传值self。

--在Python2中,super()的完整用法是super(自己类名,self),
在Python2中需要写完整,而Python3中可以简写为super()。

"""

class OldboyPeople:
    school='oldboy'
    def __init__(self,name,age,sex):
        self.name=name
        self.age=age
        self.sex=sex

class OldboyStudent(OldboyPeople):

    def __init__(self,name,age,sex,stu_id):
        super().__init__(name,age,sex)
        self.stu_id=stu_id

    def choose_course(self):
        print('%s is choosing course'%self.name)
        # return 'true'
        #函数自带返回值none,如果把return 'true'这一行注释的话,
        # 那么打印的print(stu1.choose_course())这个结果就会是:tank is choosing course
        # 并且还会打印出有None。

stu1=OldboyStudent('tank',19,'male',1)
print(stu1.__dict__)
print(stu1.choose_course())

上述程序输出的打印结果如下所示:
{'name': 'tank', 'age': 19, 'sex': 'male', 'stu_id': 1}
tank is choosing course
None

原文地址:https://www.cnblogs.com/ludundun/p/11494933.html

时间: 2024-10-29 04:00:12

推荐使用的派生方法:super().__init__()的相关文章

抽象类,子类调用弗雷的方法,super

1\ 抽象类 子类 必须与子类一样的函数名, 限制了子类名必须与父类名一样,就定义了一个标准,做统一, 抽象类,不能被实例化,作用就是定义标准,不用具体实例化 1 Python本身不提供抽象类和接口机制,要想实现抽象类, 2 可以借助abc模块.ABC是Abstract(摘要) Base(基础,底部) Class的缩写. 3 4 5 abc.ABCMeta 这是用来生成抽象基础类的元类.由它生成的类可以被直接继承. 6 7 import abc 8 class File(mataclass=ab

python中super().__init__和类名.__init__的区别

super().__init__相对于类名.__init__,在单继承上用法基本无差 但在多继承上有区别,super方法能保证每个父类的方法只会执行一次,而使用类名的方法会导致方法被执行多次 多继承时,使用super方法,对父类的传参数,应该是由于python中super的算法导致的原因,必须把参数全部传递,否则会报错 单继承时,使用super方法,则不能全部传递,只能传父类方法所需的参数,否则会报错 多继承时,相对于使用类名.__init__方法,要把每个父类全部写一遍, 而使用super方法

python3 super().__init__()

父类不会自动调用__init__方法 class A: def __init__(self): A = 'A' self.a = 'a' print('init A') class B(A): def __init__(self): self.b = 'b' print('init B') b = B() print(b.A) print(b.a) init B A -----------------------------------------------------------------

super().__init__()的用法

--super(),会得到一个特殊的对象,该对象就是专门用来 访问父类中的属性的(严格按照继承的关系) --super().__init__(),这里__init__()括号中不需要传参self, 有其他参数传其他参数即可 --在Python2中,super()的完整用法是 super(自己类名,self).__init__(), 在Python2中需要写完整,而Python3中可以简写为 super().__init__(). --用法解析:在子类的__init__方法中使用 super().

python高级编程之访问超类中的方法:super()

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #超类01 #它是一个内建类型,用于访问属于某个对象超类特性 print super#<type 'super'> #如果已习惯于通过直接调用父类将self作为第一参数来访问的特性,可能会出现混乱 #经典方法 class M(object): def s(self): print u'不是超类方法' class S(M): def s(self): M.s(sel

mahout推荐12-相似度方法汇总

将各个计算用户相似度的方法弄过来了,可以参考下.实际运行代码 数据文件 intro.csv内容: 直接复制就行了 1,101,5.01,102,3.01,103,2.5 2,101,2.02,102,2.52,103,5.02,104,2.0 3,101,2.53,104,4.03,105,4.53,107,5.0 4,101,5.04,103,3.04,104,4.54,106,4.0 5,101,4.05,102,3.05,103,2.05,104,4.05,105,3.55,106,4.0

Python常用内建方法:__init__,__new__,__class__的理解

python中所有类都是继承自object, 而object提供了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性.可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多.而很多系统提供的内建属性实际开发中用户都需要重写后才会使用.对于python来说,属性或者函数都可以被理解成一个属性. 使用dir()函数查看python中给对象提供的所有(内建)属性 class Person(object): pass print(dir(P

___new__方法和__init__方法的区别

1 class A(object): 2 def __init__(self,*args, **kwargs): 3 print "init A" 4 def __new__(cls,*args, **kwargs): 5 print "new A %s"%cls 6 #return super(A, cls).__new__(cls, *args, **kwargs) 7 return object.__new__(cls, *args, **kwargs) 说明

知识点:构造和析构方法 __new__ , __init__ , __del__

1:__new__ 类创建对象的一个执行的方法,一般不需要重写这个函数.当继承的类是不可变,但是又想修改该对象. 基本语法  def __new__(cls ,[args,]]) ####写一个将字母全部大写的类#### class Capstr(str): def __new__(cls , string): string = string.upper() return str.__new__(cls , string) print(Capstr("marian")) ####写一个