一、类和对象
python可以动态的添加删除变量和方法
类中的方法至少要有一个参数,第一个参数会被绑定到类的实例上,通常命名为self
1.构造函数
类中的构造方法名为 __init__(self,...,...),如果类没有定义构造方法,则会自动包含一个只有self的构造方法
class Person:
'这是一个Person类'
def __init__(self,name='tom',age=10):
print('创建一个Person类')
self.name=name
self.age=age
def say(self,content):
print(content)
python一个类只有一个构造函数。不向java net 可以重载多个构造函数
2.创建对象
调用构造方法创建类的对象,不需要使用new关键字
p=Person()#打印创建一个Person类
调用
p.name
p.say('你好')
赋值
p.name='lilei'
3.动态操作对象
动态添加变量
p.skills=['Singing','Swimming']
动态删除变量
del p.name
动态创建方法
动态创建方法是,不会自动绑定到第一个参数,所以调用方法时,需要手动绑定
def hi(self):
print("say hello")
p.hello=hi
p.hello(p)
如果想要动态的方法能自动绑定需要用到types模块下的MetodType
略
4.self
类中使用一个方法调用另一个方法
class Dog:
def jump(self):
print('jump')
def run(self):
self.jump()
print('run')
p=Dog()
p.run()
二、方法
1.方法调用
def a():
print('全局的a方法')
class Dog():
def a():
print('Dog下的a方法')
def b(self):
print( self ,'Dog下的b方法')
a()#使用全局方法
Dog.a()#使用位绑定的类方法
########
dog=Dog()
dog.b()#使用位绑定的类方法
Dog.b(dog)#使用位绑定的类方法
Dog.b('dog')#使用位绑定的类方法,实例名可以不是Dog类,任意字符串即可
打印

2.类方法和静态方法
类方法和静态方法可以直接调用函数,区别是类方法会自动绑定
class Dog():
@classmethod
def a(self):
print('Dog下的a方法')
@staticmethod
def b(self):
print( self ,'Dog下的b方法')
Dog.a()
Dog.b('dog')
3.函数修饰器@
三、成员变量
1.类变量和实例变量
在类中没有操作实例变量时,得出的结果都是相同的
class Student:
age=8
name='tom'
Student.name#类变量 打印tom
stu=Student() stu.name#实例变量 打印tom、
如果在构造函数创建实例后,类变量和实例变量会变成两个不一样的变量
class Student:
age=8
name='tom'
def s(self,age,name):
#新创建的两个实例变量
self.age=age
self.name=name
stu=Student()
stu.s(10,'jack')
print(Student.name)#打印 tom
print(stu.name)#打印 jack
2.用property函数定义属性
四、封装
双下划线
五、继承
1.继承
定义类时使用(父类1,父类2,...)表示继承,python允许多继承
class Fruit:
def fruit(self):
print('水果类')
class Food:
def food(self):
print('食物类')
class Apple(Fruit,Food):#继承水果和食物类
def apple(self):
print('苹果类')
a=Apple()
a.apple()
a.fruit()
a.food()
2.重写父类方法
class Apple(Fruit,Food):
def fruit(self):
print('苹果类')
3.
六、动态性
python是动态语言,可以动态增加删除
七、多态
由于python是弱语言天生带有多态性
八、枚举
来源:https://www.cnblogs.com/buchizaodian/p/6920514.html