码迷,mamicode.com
首页 > 编程语言 > 详细

Python 类的内置方法

时间:2018-11-04 12:37:28      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:call   .com   其它   bin   The   def   doc   执行   打印   

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 作者:Presley
# 邮箱:1209989516@qq.com
# 时间:2018-11-04
# python内置方法

class A:
n = "A"
def f2(self):
print("from A")

class B(A):
n = "B"
def f1(self):
print("from B")
# def f2(self):
# print("f2 from B")

class C(A):
n = "C"
def f2(self):
print("from C")

class D(B,C):
# def __new__(cls, *args, **kwargs):#初始化类中所有构造方法,如果这样重写了那么就只会执行重写的这个方法,需要再调用类中的其它方法就会报错
# print("--new--")
def __init__(self):
print("__init__")
self.n = 4
def __call__(self, *args, **kwargs):
print("__call__")
‘‘‘test doc‘‘‘
# def __del__(self):#在程序运行完后会在内存中自动销毁
# print("deleteing the ....")
pass

#1、继承类的优先级
# d = D()
# d.f1()
# d.f2()#按照先去找B,没有的话再去找C,C没有的话再去找A。按照广度优先的原则

#在老版本中经典类按照深度优先,新式类按照广度优先,但是在3.0后无论经典类还是新式类全都按照广度优先,因此上图虽然是经典类但是还是广度优先

#2、类中的内置方法
# d = D()
# print(d.__doc__) #打印出类中的字符串,可以用来注释
# print(d.__module__)#打印模块所在的文件的名字

#obj = D() #执行__init__
#obj() #执行__call__
#print(obj.__new__):#初始化类中所有构造方法,如果这样重写了那么就只会执行重写的这个方法,需要再调用类中的其它方法就会报错
#print(obj.__dict__)#将类的成员变量以字典的形式打印出来,不会打印实例变量

#metaclasses 比new都还要底层的类,如果重写类就用到,基本不会用到

#3、类的构造 类是由type构造的
# wohaoshuai = type("wohaoshuai",(),{"test":123})
# print(type(wohaoshuai)) #<class ‘type‘>
# a = wohaoshuai()
# print(a.test) #123

Python 类的内置方法

标签:call   .com   其它   bin   The   def   doc   执行   打印   

原文地址:https://www.cnblogs.com/Presley-lpc/p/9903300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!