2022-01-09周报

目录

python

第九章 类

1.创建类

2.使用类和实例

3.继承

4.导入类

5.python标准库

6.类编写风格


python

第九章 类

1.创建类

根据dog类创建的每个实例都将存储名字和年龄,赋予每条小狗蹲下sit()和打滚roll_over()

class Dog:
    def __init__ (self,name,age):
        self.name=name
        self.age=age

    def sit(self):
        print(f"{self.name} is now sitting.")

    def roll_over(self):
        print(f"{self.name} rolled over!")

方法_init_() 类中的函数称为方法。

将方法_init_()定义成包含三个形参:self、name和age。

self必不可少,而且必须位于其他形参的前面。因为python调用这个方法来创建Dog实例时,将自动传入实参self

1.1根据类创建实例

my_dog = Dog('Willie', 6)
print(f"my dog name's is {my_dog.name}.")
print(f"my dog is {my_dog.age} years old.")

调用类中的定义:

my_dog = Dog('Willie', 6)
my_dog.sit()
my_dog.roll_over()

创建多个实例

print("\n")
my_dog=Dog('Willie',6)
your_dog=Dog('lucy',3)

print(f"my dog name's is {my_dog.name}.")
print(f"my dog is {my_dog.age} years old.")
my_dog.sit()

print(f"your dog name's is {your_dog.name}.")
print(f"your dog is {your_dog.age} years old.")
your_dog.sit()

2.使用类和实例

2.1car类

class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

print("\n")
my_new_car = Car ('audi','a4',2019)
print(my_new_car.get_descriptive_name())

2.2给属性指定默认值

在上面的基础上添加一条属性和一个方法

class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        print(f"this car has {self.odometer_reading} miles on it")

print("\n")
my_new_car = Car ('audi','a4',2019)
print(my_new_car.get_descriptive_name())
my_new_car.read_odometer()

2.3修改属性的值

1.直接修改属性的值

--snip--
print(my_new_car.get_descriptive_name())
my_new_car.odometer_reading=23  # 让python找到odometer_reading,并修改
my_new_car.read_odometer()

2.通过方法修改属性的值

class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        print(f"this car has {self.odometer_reading} miles on it")

    def update_odometer(self,mileage):
        self.odometer_reading=mileage

print("\n")
my_new_car = Car ('audi','a4',2019)
print(my_new_car.get_descriptive_name())

my_new_car.update_odometer(23)
my_new_car.read_odometer()

设置一个方法update_odometer,用来更新里程

在对方法update_odometer进行扩展,修改里程表时,禁止任何人将里程表读数往回调

class Car:
    # --snip--
    def update_odometer(self,mileage):
        if mileage>=self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("you can't roll back an odometer")

通过方法对属性的值进行递增

class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        print(f"this car has {self.odometer_reading} miles on it")


    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("you can't roll back an odometer")

    def increment_odometer(self,miles):
        self.odometer_reading +=  miles

print("\n")
my_used_car = Car('subaru','outback',2015)
print(my_used_car.get_descriptive_name())

my_used_car.update_odometer(23_500)
my_used_car.read_odometer()

my_used_car.increment_odometer(100)
my_used_car.read_odometer()

3.继承

编写的类是另一个现成类的特殊版本,可使用继承 

原有的类成为父类,新类称为子类

3.1编写子类的方法

在原有car的基础上,模拟电动汽车

class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        print(f"this car has {self.odometer_reading} miles on it")


    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("you can't roll back an odometer")

    def increment_odometer(self,miles):
        self.odometer_reading +=  miles

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)  # 调用父类的方法,也就是调用父类中的__init__(make,model,year)

print("\n")
my_tesla=ElectricCar('tesla','models',2019)
print(my_tesla.get_descriptive_name())

3.2给子类定义属性和方法

class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        print(f"this car has {self.odometer_reading} miles on it")


    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("you can't roll back an odometer")

    def increment_odometer(self,miles):
        self.odometer_reading +=  miles

class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        self.battery_size=75
    def describe_battery(self):
        print(f"this car has a {self.battery_size}-Kwh battery")


print("\n")
my_tesla=ElectricCar('tesla','models',2019)
print(my_tesla.get_descriptive_name())
my_tesla.describe_battery()

3.3重写父类的方法

假设Car类里有一个名为fill_gas_tank()的方法,它对电动汽车毫无意义,因此可以重写这个方法

class ElectircCar(Car):
    # --snip--
    def fill_gas_tank(self):
        print("This car doesn't need a gas tank!")

3.4将实例用作属性

将大类拆分成多个协同工作的小类

定义了一个battery的新类

class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

class Battery:
    def __init__(self,battery_size=75):       # 如果battery_size 没有被提供值,将被设置为75
        self.battery_size=battery_size
    def describe_battery(self):
        print(f"This car has a {self.battery_size}-KWh battery.")

    def get_range(self):
        if self.battery_size==75:
            range=260
        elif self.battery_size==100:
            range=315

        print(f"This car can go about {range} miles on a full charge.")


class ElectricCar(Car):
    def __init__(self,make,model,year):
        super().__init__(make,model,year)
        self.battery=Battery()  # 添加self_battery属性,让python创建一个新的Battery实例,并赋值给self_battery属性

my_tesla=ElectricCar('tesla','model',2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.get_range()

4.导入类

python允许将类存储在模块中,然后在主程序中导入所需的模块

4.1在一个模块中存储多个类

"""一个可用于表示汽车的类"""
class Car:
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0

    def get_descriptive_name(self):
        long_name=f"{self.year} {self.make} {self.model}"
        return long_name.title()

    def read_odometer(self):
        """打印一条消息,支出汽车的里程"""
        print(f"this car has {self.odometer_reading} miles on it")


    def update_odometer(self, mileage):
        """
        将里程表设置为指定的值
        拒绝将里程表回调
        """
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("you can't roll back an odometer")

    def increment_odometer(self,miles):
        """将里程表读数增加指定的量"""
        self.odometer_reading +=  miles


class Battery:
    def __init__(self,battery_size=75):       # 如果battery_size 没有被提供值,将被设置为75
        self.battery_size=battery_size
    def describe_battery(self):
        print(f"This car has a {self.battery_size}-KWh battery.")

    def get_range(self):
        if self.battery_size==75:
            range=260
        elif self.battery_size==100:
            range=315

        print(f"This car can go about {range} miles on a full charge.")



class ElectricCar(Car):
    """模拟电动汽车的独特之处"""
    def __init__(self,make,model,year):
        """
        初始化父类的属性
        再初始化电动汽车特有的属性
        """
        super().__init__(make,model,year)
        self.battery=Battery()  # 添加self_battery属性,让python创建一个新的Battery实例,并赋值给self_battery属性

4.2导入单个类

from car import Car

my_new_car=Car('audi','a4',2019)
print(my_new_car.get_descriptive_name())

my_new_car.odometer_reading=23
my_new_car.read_odometer()

4.3在一个模块中导入多个类

from car import Car,ElectricCar

my_beetle=Car('volkswagen','beetle',2019)
print(my_beetle.get_descriptive_name())

my_tesla=ElectricCar('tasla','roadster',2019)
print(my_tesla.get_descriptive_name())

4.4导入整个模块

import car

my_beetle=car.Car('volkswagen','beetle',2019)
print(my_beetle.get_descriptive_name())

my_tesla=car.ElectricCar('tasla','roadster',2019)
print(my_tesla.get_descriptive_name())

4.5导入模块中的所有类

from  car import*
my_beetle=Car('volkswagen','beetle',2019)
print(my_beetle.get_descriptive_name())

my_tesla=ElectricCar('tasla','roadster',2019)
print(my_tesla.get_descriptive_name())

4.6在一个模块中导入另一个模块

将类存储在多模块中时,可能会发现一个模块中的类依赖于另一个模块中的类,在这种情况下,可在前一个模块中导入必要的类

electric_car.py

从每个模块中分别导入类

from car import Car
# 需要让car.py中只包含Car类
class Battery:
    def __init__(self,battery_size=75):       # 如果battery_size 没有被提供值,将被设置为75
        self.battery_size=battery_size
    def describe_battery(self):
        print(f"This car has a {self.battery_size}-KWh battery.")

    def get_range(self):
        if self.battery_size==75:
            range=260
        elif self.battery_size==100:
            range=315

        print(f"This car can go about {range} miles on a full charge.")

class ElectricCar(Car):
    """模拟电动汽车的独特之处"""
    def __init__(self,make,model,year):
        """
        初始化父类的属性
        再初始化电动汽车特有的属性
        """
        super().__init__(make,model,year)
        self.battery=Battery()  # 添加self_battery属性,让python创建一个新的Battery实例,并赋值给self_battery属性
from car import Car
from electirc_car import ElectricCar
my_beetle=Car('volkswagen','beetle',2019)
print(my_beetle.get_descriptive_name())

my_tesla=ElectricCar('tasla','roadster',2019)
print(my_tesla.get_descriptive_name())

4.7使用别名

from electirc_car import ElectricCar as EC
my_tesla=EC('tasla','roadster',2019)

5.python标准库

6.类编写风格

类名中的每个单词的首字母都大写,而不使用下划线。  

实例名和模块名都采用小写格式,并在单词之间加上下划线。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现甘特图,需要使用Echarts的Gantt模块。首先,需要引入Echarts和Gantt模块的JS文件,在HTML中建立一个容器用于渲染图表。然后,需要定义一个包含任务信息的JSON据,例如funListT07。最后,使用Echarts的API绘制甘特图,可以参考以下代码: ``` // 引入Echarts和Gantt模块 <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/gantt.min.js"></script> // 在HTML中建立容器 <div id="container" style="height:600px;"></div> // 定义任务信息的JSON据 var data = [ { id: 1, name: "零部件01", start: "2022-01-01", end: "2022-01-05", }, { id: 2, name: "零部件02", start: "2022-01-03", end: "2022-01-08", }, { id: 3, name: "零部件03", start: "2022-01-06", end: "2022-01-10", }, { id: 4, name: "零部件04", start: "2022-01-02", end: "2022-01-09", }, { id: 5, name: "零部件05", start: "2022-01-05", end: "2022-01-10", }, { id: 6, name: "零部件06", start: "2022-01-06", end: "2022-01-12", }, { id: 7, name: "零部件07", start: "2022-01-03", end: "2022-01-10", }, ]; // 绘制甘特图 var chart = echarts.init(document.getElementById('container')); var option = { tooltip: {}, legend: { data: ['任务'], textStyle: { fontSize: 14, }, }, grid: { top: '10%', bottom: '10%', }, xAxis: { type: 'time', splitLine: { show: false, }, }, yAxis: { type: 'category', data: data.map(function (item) { return item.name; }), splitLine: { show: false, }, }, series: [ { name: '任务', type: 'gantt', data: data.map(function (item) { return { name: item.name, value: [ item.start, item.end, item.id, ], }; }), label: { position: 'inside', formatter: function (params) { return params.name; }, }, }, ], }; chart.setOption(option); ``` 以上代码就可以绘制出funListT07的甘特图了。需要注意的是,据中的日期格式必须为"yyyy-MM-dd",并且时间轴的类型必须为"time"。同时,还可以根据需要进行其他的样式和配置调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值