在person.py文件中定义PersonBase的父类和Chinese的子类。PersonBase类中定义两种方法,talk()和walk()。Chinese子类中定义一个属于子类的language()子类
person.py
class PersonBase():
def __init__(self):
print('Person Base Class!')
def talk(self):
print('You can say anything!')
def walk(self):
print('You can go anywhere!')
class Chinese(PersonBase):
def __init__(self):
print('This is persons subclass')
super().__init__()
def language(self):
print('You are in China,you should say Chinese!')
编辑另一文件class.py,在class.py中有如下几种导入类的方法:
一、导入单个类
class.py
from person import PersonBase #导入单个PersonBase类
if __name__ == "__main__":
xiaoming = PersonBase() #使用Person类
xiaoming.talk()
xiaoming.walk()
#xiaohong = Chinese() #未导入Chinese类,因此不可用
#xiaohong.language()
#xiaohong.talk()
#xiaohong.walk()
如上代码,通过import导入了person文件中的PersonBase类,因此可以调用此类以及此类的方法。
二、从一个模块中导入多个类
class.py
from person import PersonBase,Chinese #导入PersonBase和Chinese类
if __name__ == "__main__":
xiaoming = PersonBase() #使用Person类
xiaoming.talk()
xiaoming.walk()
xiaohong = Chinese() #以导入Chinese类
xiaohong.language()
xiaohong.talk()
xiaohong.walk()
这种方法是在从同一个文件中导入多个类
三、导入整个模块
class.py
import person
if __name__ == "__main__":
xiaoming = person.PersonBase() #使用Person类,加上模块名
xiaoming.talk()
xiaoming.walk()
xiaohong = person.Chinese() #以导入Chinese类,加上模块名
xiaohong.language()
xiaohong.talk()
xiaohong.walk()
导入整个person模块,但在使用类的时候需要在前面加上模块名,
即:变量 = 模块名.类()
四、导入模块中的所有类
class.py
from person import*
if __name__ == "__main__":
xiaoming = PersonBase() #使用Person类
xiaoming.talk()
xiaoming.walk()
xiaohong = Chinese() #以导入Chinese类
xiaohong.language()
xiaohong.talk()
xiaohong.walk()
这种导入方式使用的时候不需要加上模块名。
但python:从入门到精通里面不建议使用这种方式,因为:这种导入方式没有明确地指出你使用了模块中的哪些类。这种导入方式还可能引发名称方面的困惑。如果你不小心导入了一个与程序文件中其他东西同名的类,将引发难以诊断的错误。
需要从一个模块中导入很多类时,最好导入整个模块,并使 module_name.class_name语法来访问类。这样做时,虽然文件开头并没有列出用到的所有类,但你清楚地知道程序的哪些地方使用了导入的模块;你还避免了导入模块中的每个类可能引发的名称冲突。
***小结:***根据python:从入门到实践,学习以上导入类的方法。以上代码中使用了
“if name == “main”:”,这种结构在下一次更新。