重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天就跟大家聊聊有关如何在Python中使用自定义类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
“只有客户发展了,才有我们的生存与发展!”这是创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都网站建设、成都做网站、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。
抽象方法
class Person(): def say(self): pass class Student(Person): def say(self): print("i am student")
抽象类: 包含抽象方法的类
抽象类可以包含非抽象方法
抽象类可以有方法和属性
抽象类不能进行实例化
必须继承才能使用,且继承的子类必须实现所有抽象方法
import abc class Person(metaclass=abc.ABCMeta): @abc.abstractmethod def say(self): pass class Student(Person): def say(self): print("i am student") s = Student() s.say()
补充:函数名和当做变量使用
class Student(): pass def say(self): print("i am say") s = Student() s.say=say s.say(9)
组装类
from types import MethodType class Student(): pass def say(self): print("i am say") s = Student() s.say=MethodType(say,Student) s.say()
元类
# 类名一般为MetaClass结尾 class StudentMetaClass(type): def __new__(cls, *args, **kwargs): print("元类") return type.__new__(cls, *args, **kwargs) class Teacher(object, metaclass=StudentMetaClass): pass t = Teacher() print(t.__dict__)
附:python 抽象类、抽象方法的实现示例
由于python 没有抽象类、接口的概念,所以要实现这种功能得abc.py 这个类库,具体方式如下
from abc import ABCMeta, abstractmethod #抽象类 class Headers(object): __metaclass__ = ABCMeta def __init__(self): self.headers = '' @abstractmethod def _getBaiduHeaders(self):pass def __str__(self): return str(self.headers) def __repr__(self): return repr(self.headers) #实现类 class BaiduHeaders(Headers): def __init__(self, url, username, password): self.url = url self.headers = self._getBaiduHeaders(username, password) def _getBaiduHeaders(self, username, password): client = GLOBAL_SUDS_CLIENT.Client(self.url) headers = client.factory.create('ns0:AuthHeader') headers.username = username headers.password = password headers.token = _baidu_headers['token'] return headers
如果子类不实现父类的_getBaiduHeaders
方法,则抛出TypeError: Can't instantiate abstract class BaiduHeaders with abstract methods 异常
看完上述内容,你们对如何在Python中使用自定义类有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联成都网站设计公司行业资讯频道,感谢大家的支持。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。