您的位置:首页 > 编程语言 > Python开发

Python学习(十四)——面向对象

2017-10-01 14:20 281 查看
面向对象

类的基本使用:

1 编写一个空类

# 空类
class MyClass(object):
'abs'
pass


2 编写一个简单类

定义一个猫的类,默认为所有猫的叫声都是'Meow':

# 简单类
class Cat(object):
def cry(self):
print 'Meow! Meow!'

if __name__ == '__main__':
#实例化
cat = Cat()
cat.cry()


输出:

Meow! Meow!


3 为简单类添加一个属性

在猫类下添加一个catName方法,绑定一个name属性,在实例化的时候记录猫的名字:

class Cat(object):
"define a class"
def catName(self, name):
self.name = name
def cry(self):
print 'Meow! Meow! I am %s.'%self.name

if __name__ == '__main__': # 程序入口
cat = Cat()
cat.catName('Min')  # 设置实例属性
cat.cry()           # 设置实例行为


输出:

Meow! Meow! I am Min.


4 通过定义一个init方法,把一些必须绑定的属性强制填写进去;

这里认为所有的猫都该有个自己的名字,所以将name绑定到init方法上:

# __init__()举例
class Cat(object):
"define a class"
def __init__(self, name):
self.name = name

def cry(self):
print 'Meow! Meow! I am %s.'%self.name

if __name__ == '__main__': # 程序入口
cat = Cat('Min')
cat.cry()           # 设置实例行为


5 添加类属性

类属性(class attributes):与实例无关,修改类属性需要使用类名.

可以由类中的方法来更新,也可以在主程序中更新.

class Cat(object):
"define a class"
counter = 0
def __init__(self, name):
self.name = name
Cat.counter += 1  # 注意:修改类属性需要使用类名.
def cry(self):
print 'Meow! Meow! I am %s.'%self.name
print Cat.counter

if __name__ == '__main__': # 程序入口
for i in range(5):
cat = Cat('cat'+str(i+1))
cat.cry()           # 设置实例行为


输出:

Meow! Meow! I am cat1.
1
Meow! Meow! I am cat2.
2
Meow! Meow! I am cat3.
3
Meow! Meow! I am cat4.
4
Meow! Meow! I am cat5.
5


6  类的继承

Python中类的继承可以单继承也可以多继承.

class Cat(object):
"define a class"
counter = 0
def __i
b979
nit__(self, name):
self.name = name
Cat.counter += 1  # 注意:修改类属性需要使用类名.
def cry(self):
print 'Meow! Meow! I am %s.'%self.name
print Cat.counter

# 子类PersionCat继承了父类Cat
class PersionCat(Cat):
def cry(self):    # 子类重写了父类中的cry()方法
print 'I am %s. and I am a Persion Cat' % self.name

if __name__ == '__main__': # 程序入口
for i in range(5):
cat = PersionCat('cat'+str(i+1))
cat.cry()           # 设置实例行为


输出:

I am cat1. and I am a Persion Cat
I am cat2. and I am a Persion Cat
I am cat3. and I am a Persion Cat
I am cat4. and I am a Persion Cat
I am cat5. and I am a Persion Cat




常规方法 类方法 静态方法

即常规方式, @classmethod修饰方式, @staticmethod修饰方式

常规方法绑定对象的实例;

类方法方法绑定对象

静态方法没有参数绑定

class A(object):
def f(self, x):
print("f(%s,%s)" % (self, x))
print('self:', self)
@classmethod
def classmethod_f(cls, x):
print("classmethod_f(%s,%s)" % (cls, x))
print('cls:', cls)
@staticmethod
def staticmethod_f(x):
print("staticmethod_f(%s)" % x)

cat = A()
print(cat.f(456))
print(cat.classmethod_f(895656))
print(cat.staticmethod_f(5))


输出:

f(<__main__.A object at 0x7f912d3ab6d0>,456)
('self:', <__main__.A object at 0x7f912d3ab6d0>)
None

classmethod_f(<class '__main__.A'>,895656)
('cls:', <class '__main__.A'>)
None

staticmethod_f(5)
None
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: