Python——静态方法与类方法、类的导入
1.静态方法与类方法
Python 中的实例方法由实例调用,且隐含传入的
self
参数为实例本身。而静态方法在类中定义,无需参数,直接由类调用。类方法由实例调用,传入的参数为类本身,通常用 cls 作为参数名字。本次的任务是让学习者掌握静态方法与类方法的声明与使用
。
相关知识
静态方法
在声明静态方法的时候,使用函数修饰符 @staticmethod。例如:
class StaticMethood:
@staticmethod
def statictest():
print("这是静态函数")
StaticMethood.statictest()
运行结果为:
这是静态函数
类方法
在声明类方法的时候,使用函数修饰符 @classmethod。例如:
class ClassMethod:
@classmethod
def classtest(cls):
print(cls)
print("这是类方法")
cm = ClassMethod()
cm.classtest()
运行结果为:
<class '__main__.ClassMethod'>
这是类方法
编程要求
函数修饰符部分,将函数声明为相应的类型,具体要求如下:
填入函数修饰符将 printStatic()方法声明为静态方法;
填入函数修饰符将 printVersion(cls)方法声明为类方法。
预期输入:
java
Joshua Bloch
1
5
预期输出:
java 的销售价格为 56
100
<class 'BookSell.BookSell'>
预期输入:
python
Julien Danjou
1
78
预期输出:
python 的销售价格为 78
100
<class'BookSell.BookSell'>
代码:
2.类的导入
当我们在写代码时,经常会遇到一种情况:我们要用到的一些功能已经在别的模块里定义过了,如果我们重新写一遍这个功能必然会使得代码冗长且效率低下。于是我们使用导入的方法将其它模块里的功能导入到自己的代码里,让我们在编写代码时能够使用。本次的任务就是让学习者者掌握
如何导入类
。
相关知识
导入整个模块(所有类)
导入整个模块的语句为:
import ModuleName
通常这个模块就是要导入的那个类所在的文件*.py,所以调用类的方法为:
object = ModuleName.ClassName()
object.属性
object.方法
导入整个模块时将这个模块里所有的类都导入了,所以都可以调用。我们在导入时就一定要知道我们需要的这个类或方法属于这个模块。
导入单个或多个类
导入单个或多个类的语句为:
from ModuleName import ClassName1,ClassName2,...
调用类的属性和方法的语句为:
object = ClassName()
object.属性
object.方法
在这种方法中,若导入的类名相同,则后面导入的类将会覆盖前面导入的类。
导入模块中所有的类
导入模块中所有的类的语句为:
from ModuleName import *
调用类的属性和方法的语句为:
object = ClassName()
object.属性
object.方法
在这种方法中,若导入的模块中含有名字相同的类,则类与类之间也会产生覆盖。
编程要求
定义了一个类 DataChange,这个类实现了将八进制转换为十进制然后输出,这个功能由这个类中的 eightToten(self,p)方法实现。
补全导入模块并调用方法实现数制转换功能,具体要求如下:
从 DataChangetest 模块中导入 DataChange 类,并使用该类中的 eightToten(self,p)方法,实现将输入的八进制转换成十进制输出。
预期输入:12
预期输出:10
预期输入:45
预期输出:37
上代码:
//如果注释理解有误,请大佬们多多评论指教!!
版权声明: 本文为 InfoQ 作者【在即】的原创文章。
原文链接:【http://xie.infoq.cn/article/4ea14134aeddcda3f7a98fe9a】。文章转载请联系作者。
评论