北大陈斌-Python语言基础与应用D12高级特性:面向对象上机练习

创建类,转换字符串,排序,计算

创建一个类people
包含属性name,city,可以转换为字符串形式(str
包含方法moveto(self, newcity)
创建4个人对象,放到列表中进行排序

class People:
    def __init__(self, name, city):
        self.name = name
        self.city = city

    # People的易读字符串表示
    def __str__(self):
        return "(%s, %s)" % (self.name, self.city)

    def moveto(self, newcity):
        self.city = newcity

    # 对city进行排序
    def __lt__(self, other):
        return self.city < other.city

    # 人看得懂的方式表示name和city
    __repr__ = __str__

# 构造一个Python List对象
P = list()

# 创建4个people
a = People("狗哥", "重庆")
b = People("安然", "重庆")
c = People("大力姣", "重庆")
d = People("马田", "重庆")
# 添加People对象到List中
P.append(a)
P.append(b)
P.append(c)
P.append(d)
print("原始排列方式:", P)

# 对List进行排列
P.sort()
# 查看排列后的结果
print("重新排列方式:", P)
d.moveto('不知道')
b.moveto('英国')
P.sort()
print("新城市重新排列方式:", P)

创建一个类teacher,是people的子类,新增属性school,
moveto方法改为newschool,
按照school进行排序,
创建4个教师对象,放到列表进行排序

class Teacher(People):
    def __init__(self, name, city, school):
        super().__init__(name, city)
        self.school = school

    def newschool(self, newschool):
        self.school = newschool

    def __lt__(self, other):
        return self.school < other.school

    def __str__(self):
        return "(%s, %s)" % (self.name, self.school)
    __repr__ = __str__

t = []
a = Teacher("小陈", "Shanghai", "地大")
b = Teacher("小万", "Beijing", "北外")
c = Teacher("小朱", "Shenzhen", "贵大")
d = Teacher("小金", "Guangzhou", "林大")

t.append(a)
t.append(b)
t.append(c)
t.append(d)

print("原始排列方式:", t)

# 对List进行排列
t.sort()
# 查看排列后的结果
print("重新排列方式:", t)
d.newschool('不知道')
b.newschool('南大')
t.sort()
print("新学校重新排列方式:", t)

创建一个mylist类
继承自内置数据类型list(列表)
增加一个方法“累乘”product,def product(self):返回所有数据项的乘积

引入map函数控制输入

class Mylist(list):
    def product(self):
        p = 1
        for i in self:
            p *= i
        return p
'''
map()的原型是map(function, iterable, …),返回一个列表
function:传的是一个函数名,可以是python内置的,如str、int,也可以是自定义的 
iterable:传的是一个可以迭代的对象,例如列表,元组,字符串这样的'''
# 以空格控制输入
list1 = map(int, input().split())
# 类名.方法
print(Mylist.product(list1))
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值