标签:python 面向对象
一、组成:方法和属性。
类定义:
class MyClass():
def say(self):
print("hello")
test=MyClass()
test.say()
2.
属性:
self.attr = value
普通属性:
self.attr=value
静态属性:
attr=value
方法:
def func(self):
普通方法:
def func(self):
只能对象.func来调用
类方法:
def func(cls):
原则上应该类名.func来调用,实际上类名.func和对象.func都可以调用
静态方法:
def func():
对象.func或者类名.func
3.特殊的方法:
构造函数:
def __init__(self, name):
self.name = name
其他的特殊函数
len(x)## x.__len__()
a+b ## a.__add__(b)
a[b]## a.__getitem__(b)
eg:
class MyClass():
def __init__(self, value):
self.value = value
def __add__(self, B):
self.value = self.value + B.value
def print_value(self):
print(self.value)
class YourClass():
def __init__(self, value):
self.value = value
test=MyClass(1)
test+YourClass(2)
test.print_value()
二、特征:封装、继承、多态。
1.继承:
class FClass():
pass
class S1Class(FClass):
pass
class S2Class(FClass):
pass
多继承:
class SSClass(S1Class, S2Class):
pass
多继承涉及到父类中方法的选择顺序,首先需要明白名词经典类和新风格类。
经典类:class FClass():
新风格类: class FClass(object):
经典类是按照深度优先的顺序进行选择的,即SSCLASS->S1Class->FClass->S2Class
新风格类是按照广度优先的顺序进行选择的,即SSCLASS->S1Class->S2Class->FClass
尽可能的使用新风格类,经典类不支持super,proterty等。
2.多态:
python不支持多态。对于已经熟悉的java, c++,在使用多态的时候,必须传入一个指定的类型,也就是说java和c++是强类型语言,所以出现了多态这样一个概念。
对于python的实现,由于不需要指定类型,因此可以很简单的实现:
eg:
class FClass():
pass
class S1Class(FClass):
def show(self):
print("show1")
class S2Class(FClass):
def show(self):
print("show2")
def show(f):
f.show()
show(S1Class())
show(S2Class())
标签:python 面向对象
原文地址:http://bosswanghai.blog.51cto.com/9384652/1793834