Python的内置方法和类的继承举例

1.类的内置方法

Python内部类:
所谓内部类,就是在类的内部定义的类,主要目的是为了更好的抽象现实世界。
例子:
汽车是一个类,汽车的底盘轮胎也可以抽象为类,将其定义到汽车内中,而形成内部类,
更好的描述汽车类,因为底盘轮胎是汽车的一部分。
内部类实例化方法:

方法1:直接使用外部类调用内部类
方法2:先对外部类进行实例化,然后再实例化内部类
out_name = outclass_name()
in_name = out_name.inclass_name()
in_name.method()

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    __age = 30   #私有属性

    class Chinese(object):
        print("I am chinese")

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #调用类的方法
    def test(self):
        print ("this is class method")

    @staticmethod  #调用类的方法
    def test1():
        print ("this is static method")

jack = People.Chinese()
#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    __age = 30   #私有属性

    class Chinese(object):
        name ="I am a Chinese."

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #调用类的方法
    def test(self):
        print ("this is class method")

    @staticmethod  #调用类的方法
    def test1():
        print ("this is static method")

jack = People.Chinese()  #外部类调用内部类
print jack.name     #外部类调用内部类对象

另一种方法,外部类调用内部类对象

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    __age = 30   #私有属性

    class Chinese(object):
        name ="I am a Chinese."

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #调用类的方法
    def test(self):
        print ("this is class method")

    @staticmethod  #调用类的方法
    def test1():
        print ("this is static method")

ren = People()            #实例化外部类
jack = ren.Chinese()   #实例化内部类
print jack.name           #打印内部类属性

或
print People.Chinese.name
print People.Chinese().name

魔术方法:

str(self)
构造函数与析构函数
构造函数:

用于初始化类的内部状态,Python提供的构造函数是__init__():
__init__():方法是可选的,如果不提供,python会给出一个默认的__init__方法。

析构函数:

用于释放对象占用的资源,python提供的析构函数是__del__():
__del__():也是可选的,如果不提供,则python会在后台提供默认析构函数。

构造函数str

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    __age = 30   #私有属性

    class Chinese(object):
        name ="I am a Chinese."

    def __str__(self):
        return "This is People class"

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #调用类的方法
    def test(self):
        print ("this is class method")

    @staticmethod  #调用类的方法
    def test1():
        print ("this is static method")

ren = People()            #实例化外部类
print ren     #默认执行__str__

init(self)初始化类:

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    __age = 30   #私有属性

    class Chinese(object):
        name ="I am a Chinese."

    def __str__(self):
        return "This is People class"

    def __init__(self,c=‘white‘):   #类实例化时自动执行
        self.color = c
 self.think()

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #调用类的方法
    def test(self):
        print ("this is class method")

    @staticmethod  #调用类的方法
    def test1():
        print ("this is static method")

jack = People(‘green‘)
ren = People()            #实例化外部类
print ren.color        #通过对象访问属性是初始化后的值
print People.color    #通过类访问还是原来的值   

[[email protected] 20180110]# python test1.py
I am a black
I am a thinker
30
black
yellow

析构函数del():释放资源

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    __age = 30   #私有属性

    class Chinese(object):
        name ="I am a Chinese."

    def __str__(self):
        return "This is People class"

    def __init__(self,c=‘white‘):   #类实例化时自动执行
        print ("initing...")
 self.color = c
        self.think()
        f = open(‘test.py‘)

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #调用类的方法
    def test(self):
        print ("this is class method")

    @staticmethod  #调用类的方法
    def test1():
        print ("this is static method")

     def __del__(self):
          print ("del....")
   self.f.close()

jack = People(‘green‘)
ren = People()            #实例化外部类
print ren.color        #通过对象访问属性是初始化后的值
print People.color    #通过类访问还是原来的值   

垃圾回收机制:

Python采用垃圾回收机制来清理不再使用的对象;python提供gc模块释放不再使用的对象。
Python采用“引用计数”的算法方式来处理回收,即:当然某个对象在其作用域内不再被其
他对象引用的时候,python就自动化清除对象。
gc模块collect()可以一次性收集所有待处理的对象(gc.collect)

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    __age = 30   #私有属性

    class Chinese(object):
        name ="I am a Chinese."

    def __str__(self):
        return "This is People class"

    def __init__(self,c=‘white‘):   #类实例化时自动执行
        print ("initing...")
                 self.color = c
        self.think()
        f = open(‘test.py‘)

    def think(self):
        self.color = "black"
        print "I am a %s "  % self.color
        print ("I am a thinker")
        print self.__age

    def  __talk(self):
        print "I am talking with Tom"

    @classmethod #调用类的方法
    def test(self):
        print ("this is class method")

    @staticmethod  #调用类的方法
    def test1():
        print ("this is static method")

     def __del__(self):
          print ("del....")
   self.f.close()

print gc.collect()     如果是0是没有回收的。
jack = People(‘green‘)
ren = People()            #实例化外部类
print ren.color        #通过对象访问属性是初始化后的值
print People.color    #通过类访问还是原来的值

2.类的继承

类的继承

继承是面向对象的重要特性之一,

继承关系继承是相对两个类而言的父子关系

子类继承了父类的所有公有属性和方法,

继承,实现了代码重用

使用继承

继承可以重用已经存在的数据和行为,减少代码的重复编写,

Python在类名后使用一对括号来表示继承关系,括号中的即类为父类

class Myclass(ParentClass),

如果父类定义了__init__方法,子类必须显式调用父类的__init__方法,

ParentClass.__init__(self,[args...])

如果子类需要扩展父类的行为,可以添加__init__方法的参数.
#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘

    def think(self):
    self.color = "black"
    print "I am a %s "  % self.color
    print ("I am a thinker")

class Chinese(People):
    pass

cn = Chinese()
print cn.color
cn.think()

父类中有构造函数:

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
     def __init__(self):
        print "Init..."
        self.dwell = ‘Earth‘
    def think(self):
        print "I am a %s "  % self.color
        print ("I am a thinker")
class Chinese(People):
    pass
cn = Chinese()
print cn.dwell
cn.think()

参数大于两个:

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    def __init__(self,c):
        print "Init..."
        self.dwell = ‘Earth‘
     def think(self):
        print "I am a %s "  % self.color
        print ("I am a thinker")
class Chinese(People):
     def __init__(self):
        People.__init__(self,‘red‘)
        pass
cn = Chinese()

Super 函数

class A(object):
        def __init__(self):
            print "enter A"
            print "leave A"
class B(object):
        def __init__(self):
            print "enter B"
            super(B,self),__init__()
            print "leave B"
b = B()
#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    def __init__(self,c):
        print "Init..."
        self.dwell = ‘Earth‘
    def think(self):
        print "I am a %s "  % self.color
        print ("I am a thinker")
class Chinese(People):
    def __init__(self):
       super(Chinese,self).__init__(‘red‘)
       pass
cn = Chinese()
cn.think()

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    def __init__(self,c):
        print "Init..."
        self.dwell = ‘Earth‘
    def think(self):
        print "I am a %s "  % self.color
        print ("I am a thinker")
class Chinese(People):
    def __init__(self):
        super(Chinese,self).__init__(‘red‘)
     def talk(self):
        print "I like taking."
cn = Chinese()
cn.think()
cn.talk()

多重继承

Python支持多重继承,第一个类可以继承多个父类

语法:

class class_name(Parent_c1,Parent_c2,...)

注意:

当父类中出现多个自定义的__init__的方法时,

多重继承,只执行第一个累的__init_方法,其他不执行。
#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    color = ‘yellow‘
    def __init__(self):
        print "Init..."
        self.dwell = ‘Earth‘
    def think(self):
        print "I am a %s "  % self.color
        print ("My home is %s ") % self.dwell
class Martian(object):
    color = ‘red‘
    def __init__(self):
        self.dwell = ‘Martian‘
class Chinese(People,Martian):
    def __init__(self):
        People.__init__(self)
cn = Chinese()
cn.think()

#!/usr/bin/env python
#-*- coding:utf-8  -*-
class People(object):
    def __init__(self):
        self.dwell = ‘Earth‘
         self.color = ‘yellow‘
    def think(self):
        print "I am a %s "  % self.color
        print ("My home is %s ") % self.dwell
class Martian(object):
    color = ‘red‘
    def __init__(self):
        self.dwell = ‘Martian‘
    def talk(self):
        print "I like talking"
class Chinese(Martian,People):
    def __init__(self):
        People.__init__(self)
cn = Chinese()
cn.think()
cn.talk()

原文地址:http://blog.51cto.com/fengyunshan911/2326769

时间: 2024-10-12 03:38:07

Python的内置方法和类的继承举例的相关文章

Python的内置方法,abs,all,any,basestring,bin,bool,bytearray,callable,chr,cmp,complex,divmod

Python的内置方法 abs(X):返回一个数的绝对值,X可以是一个整数,长整型,或者浮点数,如果X是一个复数,此方法返回此复数的绝对值(此复数与它的共轭复数的乘积的平方根) >>> abs(3+2j) 3.605551275463989 >>> abs(3-2j) 3.605551275463989 all(iterable):如果迭代器的所有元素都是true,或者空迭代器,则此方法返回true. any(iterable):迭代器只要有一个元素为false,或者空

python 字符串内置方法整理

编码相关内置方法: (1)    str.encode(encoding='utf-8'):返回字符串编码,encoding指定编码方式. >>> a = 'I love Python' >>> a.encode(encoding='utf-8') b'I love Python' >>> a.encode(encoding='gbk') b'I love Python' >>> b.encode(encoding='utf-8')

python字符串内置方法

网上已经有很多,自己操作一遍,加深印象. dir dir会返回一个内置方法与属性列表,用字符串'a,b,cdefg'测试一下 dir('a,b,cdefg') 得到一个列表 ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__'

Python字典内置方法

Python字典包含了以下内置方法: 序号 函数及描述 1 radiansdict.clear()删除字典内所有元素 2 radiansdict.copy()返回一个字典的浅复制 3 radiansdict.fromkeys()创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 4 radiansdict.get(key, default=None)返回指定键的值,如果值不在字典中返回default值 5 key in dict如果键在字典dict里返回true,否则返

九.python面向对象(内置方法)

一. 内置方法 1.__getattr__ 原文地址:https://www.cnblogs.com/Sup-to/p/10887811.html

7.python字符串-内置方法分析

上篇对python中的字符串进行了列举和简单说明,但这些方法太多,逐一背下效率实在太低,下面我来对这些方法安装其功能进行总结: 1.字母大小写相关(中文无效) 1.1 S.upper() -> string 返回一个字母全部大写的副本 1.2 S.lower() -> string 返回一个字母全是小写的副本 1.3 S.swapcase() -> string 返回一个字母大小写转换后的副本 1.4 S.title() -> string 将单词的首字母大写,即为所谓的标题 方框

python字符串-内置方法用法分析

1.字母大小写相关(中文无效) 1.1 S.upper() -> string 返回一个字母全部大写的副本 1.2 S.lower() -> string 返回一个字母全是小写的副本 1.3 S.swapcase() -> string 返回一个字母大小写转换后的副本 1.4 S.title() -> string 将单词的首字母大写,即为所谓的标题 方框里是中文的编码,可以发现 s 还是大写了,说明会无视其他类型的字符,找到英文单词就将其首字母大写 1.6 S.capitaliz

Python 字符串内置方法(二)

startswith()方法:匹配以指定字符开头的字符串 输出 匹配成功 --> 输出:True 匹配不成功 --> 输出:False In [18]: a Out[18]: 'abcda12' In [19]: a.startswith('a') Out[19]: True In [20]: a.startswith('ab') Out[20]: True In [21]: a.startswith('a',1,10) Out[21]: False rfind()方法:输出字符串中指定字符的

python:内置方法

#!usr/bin/env python# -*- coding:utf-8 -*- __author__ = "Samson"s = -1print(abs(s))#取绝对值print(all([0,-1,3]))#传入参数是否全部为真print(any([0,-1,3]))#传入参数有一个为真即为真print(type(ascii([1,2,"qiong"])))#把一个数据对象转化为可打印的字符串print(bin(20))#十进制转化为二进制print(bo