目录
4.使用print打印对象,输出为this is a object
定义一个类B,里面有一个方法print_info和一个方法say_something
定义一个类D,里面有一个方法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
定义一个子类继承上边的父类,且定义一个和父类方法名相同的方法(__)
一.定义一个类:
要求:
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