类class

编写类的时候,是定义一大类对象都有的通用行为(共性)

比如一个关于任何🐶的类Dog,表示的是all dogs
大体上具有名字,年龄,蹲下和打滚的共性

class Dog():
    """ very first try """

    def __init__(self, name, age,):
        """initiate name and age"""
        self.name = name
        self.age = age

    def sit(self):
        print(self.name.title() + " is now sitting")

    def roll_over(self):
        print(self.name.title() + " rolled over!")

⚠️:

  1. 首字母大写名称指的是类,其中Dog()中的()是空的,因为是从空白创建这个类
  2. 类中的函数称为 方法,
    对于__init__(特定),开头结尾各俩下划线,每次根据Dog创造新的实例的时候就会自动运行
    其中定义的三个实参,self, name ,age。 self是必不可少且必须位于最前的。
    当调用__init__创建Dog实例时,将自动传入实参self,不需要传递值。
    每个与类相关联的方法调用都自动传递实参self,是指向实例本身的引用
  3. 以self为前缀的变量可以供类中的所有方法使用,可以通过类的任何实例来访问变量。
    self.name = name
    获取存储在形参name中的值,并将其存储在变量name中,然后该变量name被关联到当前创建的实例中。
    可以通过实例访问的变量(name,age)称为属性。

根据类创建实例
class Dog()后

my_dog = Dog('Lucas', 6)
print("my dog's name is " + my_dog.name + ".")
print("my dog is " + str(my_dog.age) + ".")

当传递实参时,调用了Dog类中的方法__init__(),方法__init__创建了一个表示特定小狗的示例。方法__init__并未显式包含return语句,但自动返回一个表示这条🐶的实例。利用变量my_dog储存这个实例。

首字母大写的名称Dog表示类
小写的名称my_dog指的是根据类创建的实例

访问属性用句点表示法即可,my_dog.name

默认值
类中的每个属性都必须有初始值,哪怕这个值是0或者空字符串。在方法__init__()内指定这种初始值时,无需包含为它提供初始值的形参。

class Car:

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer = 0

    def descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()

    def miles(self):
        print('this car has ' + str(self.odometer) + " miles on it. ")


my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.descriptive_name())
my_new_car.miles()
>
>2016 Audi A4
this car has 0 miles on it. 

继承
创建子类时,最首先的任务是给父类所有属性赋值。子类的方法__init__需要父类施以援手?????
电动汽车属于汽车,故以电动汽车作为子类,这样就只需为电动汽车特有的属性和行为编码。

class Car:

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer = 0

    def descriptive_name(self):
        long_name = str(self.year) + ' ' + self.make + ' ' + self.model
        return long_name.title()

    def update_odometer(self, mileage):
        """set the reading to referred value"""
        self.odometer = mileage

    def miles(self):
        print('this car has ' + str(self.odometer) + " miles on it. ")


class ElectricCar(Car):
    def __init__(self, make, model, year):
    “”“初始化父类的属性”“”
        super().__init__(make, model, year)


my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.descriptive_name())

⚠️:
1.创建子类时,父类必须包含在当前文件中,且位于子类前面。
2.定义子类时,必须在括号内指定父类的名称,方法__init__必须接受创建Car实例所需的信息

class ElectricCar(Car):

3.super()是一个特殊函数,将父类和子类联系起来

super().__init__(make, model, year)

这行代码调用父类方法__init__(),让Electricity实例包含父类的所有属性
4.

class ElectricCar(Car):
    def __init__(self, make, model, year):
    “”“初始化父类的属性”“”
        super().__init__(make, model, year)


my_tesla = ElectricCar('tesla', 'model s', 2016)

创建一个E car的实例,并将其储存在变量my_tesla中,调用E Car类中定义的方法__init__(),init()🉑️调用Car中定义的方法__init__()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值