九、类

一、基本概念

类用来描述一组有相同特性(属性)和相同行为(方法)的对象。

属性、方法、继承、多态

二、类定义

类定义从关键字class开始。

Python中的类分为经典类和新式类,经典类可以不继承任何类,新式类必须有继承类。经典类有缺陷,因此python3不再支持经典类。

# -*- coding:utf-8 -*-
class Person(object):
    counter=0
    def __init__(self,age):
        self.age=age
        Person.counter+=1
    def __del__(self):
        Person.counter-=1

Person.counter 
p1=Person(30)
p2=Person(32)
Person.counter 
del p1
Person.counter 

除了自定义的类属性,Python中的每个类都有一些特殊的属性,是由Python的对象模型所提供的。

__base__该类的所有基类组成的元组
__dict__类的属性
__doc__类的文档字符串
__module__类的模块名
__name__类的名字

三、实例

3.1 创建实例

python中创建实例无new关键字,类的实例的使用不必先进行声明(如java中:Person per = new Person() )。

可以使用isinstance()判断一个对象是否为该类或该类型的子类。

class A(object):
    pass

a=A()
a.m=1
print(a.m)

a.m='hello'
print(a.m)

和类一样,类的实例也有一些特殊的属性,它们都是由python的对象模型所提供的。

__dict__实例名字空间的字典变量
__class__生成该类的实例

3.2 初始化

python中有两个容易混淆的初始化函数:__init__、__new__,二者有本质不同。__new__在创建实例时调用,用于创建实例,__init__在类实例创建后调用,用于初始化实例。

3.3 __dict__属性

实例的__dict__返回实例的属性。Python属于动态语言,实例的属性与许多语言有明显的差别,可以在任何时候添加新的属性。

 

Python提供了一系列*attr()函数用于对对象属性进行操作,有getattr()、setattr()、delattr()、hasattr()。

3.4 特殊方法

除了__init__、__new__以及__del__的类构造、析构的相关方法,另有一些特殊方法可模拟标准类型、重载操作符等功能。

__str__与__repr__是两个常用的方法。

 

 

类的特殊方法

__new__(cls,[,...]) 
__init__(self,args) 
__del__(self) 
__repr__(self) 
__str__(self) 
__cmp__(self,other) 
__index__(self) 
__lt__(self,other) 
__le__(self,other) 
__gt__(self,other) 
__ge__(self,other) 
__eq__(self,other) 
__ne__(self,other) 
__hash__(self) 
__nonzero__(self) 
__getattr__(self,name) 
__getattribute__(self,name) 
__setattr__(self,name,value) 
__delattr__(self,name) 
__call__(self,*args,**kwargs) 

四、继承

继承(Inheritance)允许子类从父类那里获得属性和方法,同时子类可以添加新方法或重载其父类中的任何方法。

 

五、多态

多态是指一个父类的引用变量可以指向不同的子类对象,并且在运行时根据父类引用变量所指向的实际类型执行相应的子类方法。

 

六、可见性

 

七、python类中的属性

八、抽象基类 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值