基于类创建对象,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。
根据类来创建对象被称为实例化。
class Dog():
"""一次简单尝试"""
def __init__(self,name,age):#这是一个特殊的方法,每次根据Dog类创建新实例时,都会自动运行它。
"""初始化属性"""
self.name=name#以self为前缀的变量可供类中所有的方法使用。
self.age=age
def sit(self):
print(self.name.title()+"is now sitting")
首字母大写的名称是类。类中的函数被称为方法。可通过实例访问的变量称为属性。
- 根据类创建实例
class Dog():
--snip--#省略代码
my_dog=Dog('kit',12)#实参传递给形参,创建实例my_dog。
通常可以认为首字母大写的名称指的是类,而小写的名称指的是根据类创建的实例。
通过句点表示法访问属性,如:my_dog.name
使用句点表示法调用类中定义的任何方法:my_dog.sit()
-
给属性指定默认值
类中每个属性都必须有初始值,哪怕的0或空字符串。
在方法__init__()内指定初始值是可以的。如果对某个属性这样做了,就无需包含为其提供初始值的形参。 -
修改属性的值的三种方法
一:直接通过实例修改
my_dog.age=18
二:通过方法修改:将值传递给一个方法,由它在内部更新。相当于在函数体内修改了全局变量。
三:通过方法对属性的值进行递增:在方法二的基础上设置。
继承
如果要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法,原有的类成为父类,新类成为子类。
子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
class Car():
--snip--
class ElectricCar(Car):
def __init__(self,make,model,year):#初始化父类属性
super().__init__(make,model,year)
父类必须包含在当前文件中,且位于子类前面。定义子类时,必须在括号内指定父类的名称。方法__init__()接受创建Car实例所需的信息。
super()是一个特殊函数,关联父类与子类。
在初始化完父类属性后,继续初始化子类属性。
-
重写父类方法
在子类中定义与要重写的父类方法同名的方法,达到重写目的。 -
将实例用作属性
将一部分代码独立成类,在需要使用时,在其被调用的类中初始化自己的属性时将该类传递。