Python 面向对象程序设计--类的特性-封装继承多态


```python
python 从入门到精通(第二版)
# 第十章 面向对象的程序设计
# 3个特点:封装 继承 多态
# 知识点:创建_init_(self)方法时必需一个self参数;私有属性不能直接通过“实例名+属性名”访问;
# @property创建用于计算的属性;子类调用基类_init_()方法需要使用super()函数
# ========================程序开始============
# 10.5 练习与实践
# 创建四边形(quadrangle)基类,设置平行四边形(parallelogram)、矩形(rectangle)子类
class Quadrangle:
    def __init__(self):
        print("I am Quadrangle")

    def method_base(self):
        print("method_base")


class Parallelogram(Quadrangle):
    def __init__(self):
        print("I am Parallelogram")
        super().__init__()  # 调用基类默认构造方法


class Rectangle(Parallelogram):
    def __init__(self):
        print("I am Rectangle")
        super().__init__()  # 调用基类默认构造方法 调用上一层基类构造方法,递归调用再上一层构造方法


para1 = Parallelogram()
rec1 = Rectangle()
rec1.method_base()


# 10.5 练习与实践 汽车类1  设置汽车类生成2个实例,设计实例里程设置与读取方法
class Car:
    def __init__(self, rank, color, brand, mileage):
        self.rank = rank
        self.color = color
        self.brand = brand
        self.mileage = mileage

    def car_attribute(self):
        print(self.rank, self.color, self.brand, self.mileage)

    def car_mileage_setter(self, mileage):
        self.mileage = mileage

    def car_mileage_getter(self):
        return self.mileage


car1 = Car('home_used', 'pink', 'Ford', 2000)
car1.car_attribute()

car2 = Car('company_used', 'pink', 'BMW', 3000)
car2.car_attribute()

car1.car_mileage_setter(5000)
car1.car_attribute()
print(car1.car_mileage_getter())


# 父类子类及类的继承

class Employee:
    """Employee class"""

    def method_common(self, name, age, phone):
        self.name = "Employee Name-" + name
        self.age = age
        self.phone = "Employee Phone-" + phone
        print(self.name, "age-", self.age, self.phone)

    def salary(self, level):
        print("Salary of  ", self.name, "=", level * 1000 + (self.age - 18) * 10)


class Managers(Employee):
    name = 'Manger Hongfei'
    age = 28
    phone = '138158000'

    def __init__(self):
        print("\n I am a manager.")

    def salary(self, level):  # 重写方法
        print("Salary of  ", self.name, "=", level * 1500 + self.age * 10)  # 管理层等级工资是1500


manager_1 = Managers()
manager_1.method_common(manager_1.name, manager_1.age, manager_1.phone)
manager_1.salary(10)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值