类(class)的定义,类中属性和方法,super的使用,类似于私有属性,访问名称改写后的属性和方法(python)

目录

一.定义一个类:

要求:

1.需要有一个类变量

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

3.定义一个方法:打印类变量和对象变量

4.使用print打印对象,输出为this is a object

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

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

二.super的使用:

要求:

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

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

定义一个类C,里面有一个方法say_somrthing

定义一个类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_aomething时调用D中的print_info和say-something

三.定义一个父类:

要求:

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

定义一个方法:命名使用__命名

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

实例化子类的对象

访问_的对象变量

访问父类中的__xxx方法

访问子类中的__xx方法


一.定义一个类:

要求:

1.需要有一个类变量

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

3.定义一个方法:打印类变量和对象变量

4.使用print打印对象,输出为this is a object

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

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

在完成要求4的时候,默认调用的是__str__的方法,在__str__方法中加入能达到要求的语句。在完成要求5的时候,‘相加’执行的是__add__的方法,在__add__方法中加入能实现目的的语句即可。

class Person:
    country = 'china'                      #定义一个类属性    要求1
    def __init__(self,name,age,gender):    #初始化对象属性    要求2
        self.name = name
        self.age = age
        self.gender = gender
    def print_info(self,country,name,age,gender):            要求3
        print('class:' + country, 'obj:' + name, age, gender)
    def __str__(self):                                       要求4
        return 'this is a object'
    def __add__(self, other):                                要求5
        return 2
per1 = Person('zhangsan', 18, '男')
per2 = Person('lisi', 25, '女')
print(per1.name, per1.age, per1.gender)
print(per2.name, per2.age, per2.gender)
per1.print_info('zhongguo', 'zhangsan', 18, '男')
per2.print_info('zhongguo', 'lisi', 25, '女')
print(per1 + per2)
print(per1.__str__(), '---', per2.__str__())
per1.temp_var = 10                                            要求6
print(per1.temp_var)

#执行结果
zhangsan 18 男
lisi 25 女
class:zhongguo obj:zhangsan 18 男
class:zhongguo obj:lisi 25 女
2
this is a object --- this is a object
10

进程已结束,退出代码0

二.super的使用:

要求:

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

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

定义一个类C,里面有一个方法say_somrthing

定义一个类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_aomething时调用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('say_something D')
class E(A,B,C,D):
    def print_info(self):
        super(A, E).print_info(self)
    def say_something(self):
        super(B, E).say_something(self)
        super(C, E).print_info(self)
        super(C, E).say_something(self)
    pass
obj_E = E()
obj_E.print_info()
obj_E.say_something()

#执行结果
print_info B
say_something C
print_info D
say_something D

进程已结束,退出代码0

三.定义一个父类:

要求:

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

定义一个方法:命名使用__命名

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

实例化子类的对象

访问_的对象变量

访问父类中的__xxx方法

访问子类中的__xx方法

class Person:

    def __init__(self):
        self._name = 'zhangsan'            #类似于私有属性
        self.age = 0
        self.__gender = "male"             #__开始的为名称改写,调用时,在前面加上_类名

    def get_info(self):
        print("get_info")

    def _get_score(self):                  
        print("get_score")

    def __get_url(self):
        print("get_url")
    pass
class Student(Person):

    def __get_url(self):
        print("Student Get Url")
    pass
sto = Student()
print(sto._name)
print(sto._Person__gender)      访问名称改写后的对象属性
sto._Student__get_url()         访问子类名称改写后的方法
sto._Person__get_url()          访问父类名称改写后的方法
             
#执行结果
zhangsan
male
Student Get Url
get_url

进程已结束,退出代码0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shadow_58

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值