Python基础(七)-类

面向对象编程是最有效的软件编写方法之一,在面向对象编程中的类可以模拟显示世界中的事物和情景,并基于这些类来创建对象,在类中定义对象的通用行为。

创建和使用类

# 创建
class Dog():
    """一次模拟小狗的简单尝试"""
    def __init__(self, name, age):
        """初始化属性name和age"""
        self.name = name 
        self.age = age 
        self.color = 'yellow'

    def sit(self):
        """模拟小狗被命令蹲下"""
        print(self.name.title() + " is now sitting")
        print("My dog's color is " + self.color)

    def roll_over(self):
        """模拟小狗被命令打滚"""
        print(self.name.title() + " rolled over!")

# 使用
my_dog= Dog('wangcai',3)
my_dog.sit()
print("My dog's name is " + my_dog.name.title() + ".")

# 输出结果
Wangcai is now sitting
My dog's color is yellow
My dog's name is Wangcai.
  • 方法 init(),相当于构造方法,每次创建类都运行该方法,方法前后都有两个下划线,这是为了避免和普通方法名称发生冲突
  • 可以在 init() 中给属性默认值如:color被给定默认值为yellow
  • 方法 sit() 由于不需要其他参数,所以只传了一个实例类本身的形参self
  • 使用就是直接类名(参数),将结果给一个变量,通过该变量.方法名就能够调用类中的方法了。
  • 修改属性的值,可以通过实例直接修改、通过方法修改属性的值、通过方法对属性的值递增:

    如 # 使用上面的例子

  • 通过实例直接修改
    my_dog = Dog('wangcai',3)
    # 将年龄改为4
    my_dog.age = 4

  • 通过方法修改属性的值
    # 在 Dog 类中声明一个方法 update_age(self, age)
    方法如下:

    def update_age(self, age):
    self.age = age

    使用:
    my_dog = Dog('wangcai',3)
    # 将年龄改为4
    my_dog.update_age(4)

  • 通过方法对属性的值递增
    # 在 Dog 类中声明一个方法 increment_age(self, age)
    方法如下:

    def increment_age(self, age):
    self.age += age

    使用:
    my_dog = Dog('wangcai',3)
    # 将年龄改为4
    my_dog.increment_age(1)

继承

# 父类
class Car():
    """docstring for Car"""
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_desc_name(self):
        car_name = str(self.year) + ' ' + self.make + ' ' + self.model
        print(car_name.title())

# 子类
class ElectricCar(Car):
    """docstring for ElectricCar"""
    def __init__(self, arg):
        super().__init__(self, make, model, year)
        self.battery_size = 70

    def desc_battery(self):
        print("This car has a " + str(self.battery_size) + "-kWh battery")

    # 重写父类的方法
    # def get_desc_name():
    #     print(" 2027 I want to buy tesla")
# 使用子类
my_tesla = ElectricCar('tesla', 'model s', 2017)
print(my_tesla.get_desc_name())
print(my_tasla.desc_battery())
  • 输出结果是
2017 Tesla Model S
This car has a 70-kWh battery
  • 父类中和其他类一样,子类中的super().init(self, 父类 init 方法中的参数列表),这些参数必不可少。
  • def desc_battery(self) 是子类的方法,用于获取汽车电池
  • 如果将重写方法的注释打开,那么输出结果将覆盖父类中get_desc_name()的输出
  • 结果如下:
2027 I want to buy tesla
This car has a 70-kWh battery

导入类

假如我们创建了Animal类( 文件名为animal ),类中含有sit()方法,想在Dog类中使用该方法,方式如下:

# animal 文件名,Animal类名
from animal import Animal
animal0 = Animal()
animal0.sit() # 这样即可调用

# 如果想导入多个类可用逗号隔开,如下:
from animal import Animal, Peoson

导入整个模块

import animal

导入模块中的所有类

from animal import *

阅读更多

扫码向博主提问

龙衣倩

买的到的知识都是不值钱的
  • 擅长领域:
  • Android
去开通我的Chat快问
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ITxiaodong/article/details/79691883
个人分类: Python
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭