python中的类

it2024-07-25  38

python中的类

前言:

      说到类,那么有可能联想到面向对象,不用说python就是面向对象的编程语言,说到面向对象,就会想到面向对象的三大特征,封装、继承、多态。

关于面向对象的解释在这个链接里讲的很详细:

https://www.runoob.com/python/python-object.html

      在这里我就简单的说说关于类的操作:

1、创建类:

class Cat(): #这个括号在没有继承其他类时可以不加     #类体 def eat(self):# self:指的是调用该函数的对象 print('小猫爱吃鱼') print(self) def drink(self): print('小猫要喝水') print(self) # 类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

2、创建实例对象:

cat = Cat() print(cat) cat.eat() cat.drink() 输出: <__main__.Cat object at 0x000001ECBA73A6D8> 小猫爱吃鱼 <__main__.Cat object at 0x000001ECBA73A6D8> 小猫要喝水 <__main__.Cat object at 0x000001ECBA73A6D8>

3、类的内置属性就是魔法方法,魔法方法我特意做了个总结,在另一篇博文里。

4、添加和获取对象属性

''' 1)、类外面添加属性语法: 对象名.属性名=值 2)、类外面获取对象属性 对象名.属性名 3)、在类里面获取对象属性 ''' class Washer(): def wash(self): print('洗衣付') # 类里面获取实例属性         print('洗衣服的宽度%s'%self.width) print('洗衣服的高度%s'%self.height) #创建对象 haer1 = Washer() # 添加属性 haer1.width = 400haer1.height = 50 # 获取属性 print('洗衣服的宽度%s,洗衣服的高度%s'%(haer1.width,haer1.height)) haer1.wash() 输出: 洗衣服的宽度400,洗衣服的高度500 洗衣付 洗衣服的宽度400 洗衣服的高度500

5、类的继承

class Parent: # 定义父类 parentAttr = 100 def __init__(self): print "调用父类构造函数" def parentMethod(self): print '调用父类方法' def setAttr(self, attr): Parent.parentAttr = attr def getAttr(self): print "父类属性 :", Parent.parentAttr class Child(Parent): # 定义子类 def __init__(self): print "调用子类构造方法" def childMethod(self): print '调用子类方法' c = Child() # 实例化子类 c.childMethod() # 调用子类的方法 c.parentMethod() # 调用父类方法 c.setAttr(200) # 再次调用父类的方法 - 设置属性值 c.getAttr() # 再次调用父类的方法 - 获取属性值 输出: 调用子类构造方法 调用子类方法 调用父类方法 父类属性 : 200 多继承: class A: # 定义类 A ..... class B: # 定义类 B ..... class C(A, B): # 继承类 A 和 B .....

你可以使用issubclass()或者isinstance()方法来检测。

issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)

isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true。

6、方法重写

如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:

class Parent: # 定义父类 def myMethod(self): print '调用父类方法' class Child(Parent): # 定义子类 def myMethod(self): print '调用子类方法' c = Child() # 子类实例 c.myMethod() # 子类调用重写方法 输出: 调用子类方法
最新回复(0)