Python语言基础(三)

class MyString:

str ="xiaoming"

    def output(self):

print(self.str)

s = MyString()

s.output()

print(s.str)

构造函数

class Myname:

。def __init__(self): #构造函数

self.name ="xiaoming"

    def __del__(self): #析造函数

print("byebye~")

def prf(self):

print(self.name)

del ps 删除对象

析构函数有一个固定的名称,__del__().通常在析构函数中释放类所占用的资源。使用del删除一个对象,释放它所占用的资源

静态方法无需传入self参数,因此在静态方法中无法访问实例变量。

在静态方法中不可以直接访问类的静态变量,但可以通过类名引用静态变量。

因为静态方法既无法访问实例变量,也不能直接访问类的静态变量,所以静态方法与定义它的类没有直接关系,而是起到了类似函数工具库的作用


类方法

类方法与静态方法一样,可以使用类名调用类方法

类成员方法也无法访问实例变量,但可以访问累的静态变量

类方法需传入代表本类的cls参数

可以使用@classmethod定义类方法

#类方法

class myname:#定义类

    val1 ="string 3"#静态变量

    def __init__(self):

self.val2 ='value 2'

    @ classmethod #类方法

    def classmd(cls):

print('类' +str(cls) +',val1:' +cls.val1 +'无法访问val2的值')

可以通过对象名调用类方法,也可以通过类名调用类方法。

类方法有一个参数cls,代表定义类方法的类,可以通过cls访问类的静态变量。

使用isinstance()函数判断对象类型,返回True/False

print(isinstance(c,MyClass))


类的继承和多态

#类的继承和多态

import time

class Users:

username =""

    def __init__(self,uname):

self.username = uname

print("(构造函数:"+self.username+')')

#显示用户名

    def dispUserName(self):

print(self.username)

class UserLogin(Users):

def __init__(self,uname,lastLoginTime):

Users.__init__(self,uname)#调用父类Users的构造函数

        self.lastLoginTime = lastLoginTime

def dispLoginTime(self):

print("登录时间为:"+self.lastLoginTime)     

#获取当前时间

now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))


抽象类和多态

抽象类是包含抽象方法的类,而抽象方法不包含任何实现的代码,只能在其子类中实现抽象函数的代码。

定义抽象类:需要从类库abc导入ABCMeta类和abstractmethod类

from abcimport ABCMeta,abstractmethod

实现抽象类:可以从抽象类派生子类。方法与普通类的派生和继承一样

多态:是指抽象类中定义的一个方法,可以在其子类中重新实现,不同子类中的实现方法也不相同

#抽象类

class Shape(object):

__metaclass__ = ABCMeta

def __init__(self):

self.color ='black'#默认使用黑色

    @abstractmethod

    def draw(self):pass

class circle(Shape):

def __init__(self,x,y,r):#定义圆心坐标和半径

        self.x = x

self.y = y

self.r = r

def draw(self):

print("Draw Circle:(%d,%d,%d)" %(self.x,self.y,self.r))

class line(Shape):

def __init__(self,x1,y1,x2,y2):#定义起止坐标值

        self.x1 = x1

self.y1 = y1

self.x2 = x2

self.y2 = y2

def draw(self):

print("Draw Line:(%d,%d,%d,%d)" %(self.x1,self.y1,self.x2,self.y2))

在不同的子类中,抽象方法draw()有不同的实现,这就是类的多态

你可能感兴趣的:(Python语言基础(三))