定义类,super的使用,super的使用

简介: 要求:a.需要有一个类变量b.需要有>=2个的对象变量c.定义一个方法:打印类变量和对象变量 d.使用print打印对象->输出为This is a objecte.实例化两个对象:且两个对象相加等于2f.为对象添加一个临时变量temp_var

一、定义一个类(不限定定义哪个类):

要求:

a.需要有一个类变量

b.需要有>=2个的对象变量

c.定义一个方法:打印类变量和对象变量 d.使用print打印对象->输出为This is a object

e.实例化两个对象:且两个对象相加等于2

f.为对象添加一个临时变量temp_var

class Person:
    country = 'china'
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def __str__(self):
        print(self.age, self.name, Person.country)
    def __add__(self, other):
        return self.age + other.age
per = Person('张三', 18)
per.__str__()
print(per.age, per.name, 'This is a object')
per1 = Person('李四', 19)
print(per + per1)
per.age = 18
print(per.age)
# 输出
18 张三 china
18 张三 This is a object
37
18

二、super的使用

定义一个类A, 里面又一个方法print_info

定义一个类B, 里边有一个方法print_info和一个方法say_something

定义一个类C, 里边有一个方法say_something

定义一个类D, 里边有一个方法print_info和一个方法say_something

定义一个类E,继承类A, 类B, 类C,类D实例化类E的对象

执行print_info和say_something方法

利用super,让执行print_info时调用B中print_info

利用super, 让执行say_something时调用C中say_something

利用super, 让执行print_info和say_something时调用D中print_info和say_something

class A:
    def print_info(self):
        print('print_info A')
class B:
    def print_info(self):
        print('print_info B')
    def say_something(self):
        print("say_something B")
class C:
    def say_something(self):
        print("say_something C")
class D:
    def print_info(self):
        print('print_info D')
    def say_something(self):
        print("sday_something D")
class E(A, B, C, D):
    # def print_info(self):
    #     super(A, E).print_info(self)
    def print_info(self):
        super(A, E).print_info(self)
    # def say_something(self):
    #     super(B, E).say_something(self)
    def print_info(self):
        super(C, E).print_info(self)
    def say_something(self):
        super(C, E).say_something(self)
e = E()
e.print_info()
e.say_something()
print(E.__mro__)
# 输出
print_info D
sday_something D
(<class '__main__.E'>, <class '__main__.A'>, <class '__main__.B'>,
 <class '__main__.C'>, <class '__main__.D'>, <class 'object'>)

三、定义一个父类

要求:包含三个对象变量,且其中一个对象变量使用_命名

定义一个方法:命名使用__命名 定义一个子类继承上边的父类:且定义一个和父类方法名相同的方法(__)

实例化子类的对象

访问带_的对象变量

访问父类中的__xxx方法

访问子类中的__xxx方法

class Person:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self._sex = sex
    def __data(self):
        pass
class Student(Person):
    def __data(self):
        pass
stu = Student('张三', 18, '男')
print(stu._sex)
stu._Person__data()
stu._Student__data()
输出
相关文章
14-self与super以及isMemberOfClass与isKindOfClass的区别
14-self与super以及isMemberOfClass与isKindOfClass的区别
50 0
|
Java Android开发
构造器里面的super()有什么用?到底写不写?
平时写的单独一个类如果没有直接继承父类就是直接继承的Object,有父类就是间接继承的Object,因为父类会继承Object,java的所有类都是Object的子类,哪怕不写super(),也会默认调用的父类的空构造器。
114 0
|
Java
Java关键字super
Java关键字super
83 0
Java关键字super
Java语法:super 详解
学习super时,应该和this对比着学习,以达到事半公倍的效果
389 0
|
前端开发 开发者
class-constructor 构造器中 super 函数的使用说明|学习笔记
快速学习 class-constructor 构造器中 super 函数的使用说明
116 0
this和super用法的区别与细节(java继承中this和super的比较)
this和super用法的区别与细节(java继承中this和super的比较)
|
Java 编译器
super&this
类在继承时会用到this和super,this通常指当前对象,super则指父类的。
274 0