class Dog():
def __init__(self,name,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!")
方法_init_()是一个特殊的方法,相当于构造方法,每当创建新实例时Python都会自动运行它,_init_()中的形参self必不可少,还必须位于其他形参的前面,但是在创建实例时不用给self传递值。 my_dog=Dog('stupy',3)
这里使用上面的Dog类创建了一个名为‘stupy’、年龄为3的my_dog实例。可以通过my_dog.name获取名字,my_dog.age获取年龄,通过my_dog.sit()、my_dog.roll_over()调用其中的方法。
self.name=newname
my_dog.update_name('wuwu')这样就无需直接访问属性,而可以将值传递给一个方法,由它在内部进行更新。
二:继承
如下例:
定义子类时,在括号里指定父类的名称。super()帮助Python将父类和子类关联起来,调用父类的方法_init_(),让ElectricCar实例包含父类的所有属性。
上面ElectricCar实例的行为与Car实例一样,现在定义电动汽车特有的属性和方法,在_init_()函数內定义一个电动汽车特有的属性,self.battery_size=70,同时编写一个打印电瓶描述的方法:
def describe_battery(self):
print("This car has a " + str(self.battery_size) + "-kWh battery.")
注:第9行的title()方法是用来返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写。
①:重写父类的方法
在子类中重新定义父类的方法,运行时将忽略父类中的方法,转而运行子类中重新定义的方法。
②:导入类的方式
a:导入单个类
将Car类存储在一个名为car.py的模块中,在另一个文件中导入Car类并创建其实例:
from car import Car
b:在一个模块中存储多个类
例如类Battery和ElectricCar都在模块car.py中,若只要导入一个ElectricCar类:
from car import ElectricCar
若两个类都导入:
from car import Car,ElectricCar
c:导入整个模块
可以直接import module_name,再用句点表示法访问需要的类。这种导入方法简单,代码也易于阅读
d:导入模块中的所有类
from module_name import *
注:不推荐这种导入方式。
一、如果只要看一下文件开头的import语句,就能清楚地知道程序使用了哪些类,将大有裨益。
二、如果程序文件中有其他同名的类,运行时将引发难以诊断的错误