创建python中的类

参考《python编程:从入门到实践》中第9章类的内容。

  1. 创建类



创建第一个类

class Dog():
    #模拟小狗
    def __init__(self,name,age):
        #初始化属性name和age
        self.name = name
        self.age = age
        
    def sit(self):
        #模拟小狗听到命令蹲下的动作
        print(self.name.title() + 'is now sitting.')
    
    def rollOver(self):
        #模拟小狗听到命令打滚
        print(self.name.title() + 'rolled over!')
注意点:
(1)第一个方法(函数)是构造函数,函数名固定,只能为__ def __init__(self),注意init左右两边都是两个下划线,输入错误将会出现语法错误;
(2)构造函数中的形参self,他的存在相当于this指针的作用。python类在定义的时候,只要使用该类自身定义的属性,既需要通过self加 ”. “来引用;self必须放在构造函数的形参的第一个。
(3)python的属性的定义就是在构造函数直接定义和使用的;
(4)约定类的首字母大写

2.使用类

创建类完成之后是生成对象,即类的实例化。
使用类主要是对属性和方法进行操作。
class Car():
"""一次模拟汽车的简单尝试"""
 def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = year
 def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
 my_new_car = Car('audi', 'a4', 2016)
print(my_new_car.get_descriptive_name())

上述程序中有描述汽车的属性,make,model,year.并且用了一个方法  get_descriptive_name(self)来描述上述属性。
(1)可以给属性指定默认值。
 
  
def __init__(self, make, model, year):
"""初始化描述汽车的属性"""
self.make = make
self.model = model
self.year = yearself.odometer_reading = 0

类中的属性必须有初始值,初始值可以由外部传入,即由形参的形式传入,也可以指定默认值。指定默认值后,就不用形参传递。
默认状态下指定属性也要用”self.“引用,来指明引用的是属性。

另外一种指定默认值的方法如下所示,
def __init__(self, battery_size=70):
这个形参是可选的,如果在实例化时没有提供参数,就会自动设定为70。
(2)修改属性
修改属性的方法由很多,可以在外部访问修改
my_new_car.odometer_reading = 23
通过方法来修改
def update_odometer(self, mileage):
"""将里程表读数设置为指定的值"""
self.odometer_reading = mileage
这种方法可以在更改属性值的时候加以限制,相当于C#中的属性。

3.继承

如果要编写的类是现有类的特殊版本,就可以使用继承的方法,获取父类的所有属性和方法。

 
class Car():......class ElectricCar(Car):
"""电动汽车的独特之处"""
    def __init__(self, make, model, year):
        """初始化父类的属性"""
        super().__init__(make, model, year)
        my_tesla = ElectricCar('tesla', 'model s', 2016)
    print(my_tesla.get_descriptive_name())


(1)创建子类时,父类必须在同一文件内,并且已经定义,并在括号内知名父类的名称。

(2)子类的属性不能小于父类,通过super()函数调用父类的构造函数。

一般子类需要增加新属性和方法,此操作与在类中添加属性和方法没有很大的差别,不再赘述。
子类可以重写父类的方法,创建子类对象时,就会引用重写后的方法。
def fill_gas_tank():
"""电动汽车没有油箱"""
print("This car doesn't need a gas tank!")

(3)将对象用作属性
为了避免一个类中的属性和方法过多,通常需要将类的一部分独立提取出来。即将一个大类拆分为多个协同工作的小类。
class Car():
--snip--
class Battery():
"""一次模拟电动汽车电瓶的简单尝试"""
 def __init__(self, battery_size=70):
    """初始化电瓶的属性"""
    self.battery_size = battery_size
 def describe_battery(self):
    """打印一条描述电瓶容量的消息"""
    print("This car has a " + str(self.battery_size) + "-kWh battery.")
class ElectricCar(Car):
"""电动汽车的独特之处"""
    def __init__(self, make, model, year):
    """
    初始化父类的属性,再初始化电动汽车特有的属性
    """
    super().__init__(make, model, year)
 self.battery = Battery()
my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
每个ElectricCar实例都包含一个自动创建的Battery实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值