python面向对象
类和对象
- 面向过程和面向对象的编程
面向过程的编程:函数式编程,C等
面向对象的编程:C++,Java,python等 - 类:是面向对象中的两个概念
- 对象:是类的一个实例,比如:黄人,白人,黑人
- 类的组成:变量和函数
变量:“成员变量”
函数:“成员函数” - 对象的组成:对象有类实例化得到,所以也是变量和函数组成
- python类的定义:
使用class定义一个类,类的首字母要大写 - python类的结构:
class MyClass(object):
变量定义
函数定义
…. - 对象的创建:
myClass1 = MyClass()#创建类的一个实例
引用对象的属性:myClass1.attribute
属性和方法
- 通过self调用类属性
- 对象生成时自动执行的特殊方法:init()
- 通过self增加对象属性
class Human(object):
laugh = 'hahaha'
def __init__(self,name):
self.name= name
print('__init__is called')
def show_laugh(self):
print(self.laugh)
def laugh_10th(self):
for i in range(10):
self.show_laugh()
kaka = Human('xiaoming')
kaka.laugh_10th()
- 类的属性是对数据的封装,方法是对类的封装
类的属性:
(1)公有属性:在类中和类外调用的属性
(2)内置属性:由系统在定义类的时候自动添加的,例如dict,module
(3)私有属性:不能被类意外的函数调用,在属性名前加__方法
(1)方法的定义:self作为第一个参数
(2)类方法也分为:公有方法和私有方法
*私有方法:不能被外部的类和方法调用
定义:加双下划线__
*类方法:被classmethod()函数处理过的函数
*静态方法:相当于“全局函数”,其中无“self”语句
- self参数:指向对象本身
继承
- 类本身可以进一步细分成子类
- 继承:子类对父类属性和方法的共享
class Brid(object):
have_feather = True
way_of_rep = 'egg'
def move(self, dx, dy):
position = [0,0]
position[0] = position[0] + dx
position[1] = position[1] + dy
return position
class Chicken(Brid):
way_of_movv = 'walk'
possible_in_KFC = True
class Swan(Brid):
way_of_move = 'fly'
possible_inKFC = False
summer = Chicken()
print(summer.have_feather)
print(summer.possible_in_KFC)
print('after move:',summer.move(5,8))