python 面向对象的编程

类和对象是面向对象编程的两个主要方面,所以就简单学习一下类以及对象的使用:

1. self

涉及到函数类的区别了:

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你为这个参数赋值,

Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。亦可理解为js,java中的this。

self的原理: Python自动转为MyClass.method(MyObject, arg1, arg2)。所以,这个你不用self不需要赋值。

2. 对象属性使用

 

#!/usr/bin/python
# Filename: method.py

class Person:
    name ="Jams" 
    def sayHi(self):
        print 'Hello, how are you?',self.name

p = Person()
print p.name
p.sayHi()

 

3. 初始方法(构造函数)

#!/usr/bin/python
# Filename: class_init.py

class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print 'Hello, my name is', self.name

p = Person('Swaroop')
p.sayHi()

__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。其实就是构造函数。你懂的。

 

4. 私有方法

如果某个变量只想在类或对象中使用,就应该以单下划线前缀。而其他的名称都将作为公共的,可以被其他类/对象使用。记住这只是一个惯例,并不是Python所要求的(与双下划线前缀不同)。

 

5. 继承

python简明教程的一句话:面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过 继承 机制。继承完全可以理解成类之间的 类型和子类型 关系。其实也是oo的多态的一种实现方式。

我发现python继承实际使用的是对象欺骗的方式,在子类中调用基类的某个方法,不过,_int_方法还需要手动调用一下:

 

#!/usr/bin/python
# Filename: inherit.py

class SchoolMember:
    '''Represents any school member.'''
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print '(Initialized SchoolMember: %s)' % self.name

    def tell(self):
        '''Tell my details.'''
        print 'Name:"%s" Age:"%s"' % (self.name, self.age),

class Teacher(SchoolMember):
    '''Represents a teacher.'''
    def __init__(self, name, age, salary):
        SchoolMember.__init__(self, name, age)
        self.salary = salary
        print '(Initialized Teacher: %s)' % self.name

    def tell(self):
        SchoolMember.tell(self)
        print 'Salary: "%d"' % self.salary

class Student(SchoolMember):
    '''Represents a student.'''
    def __init__(self, name, age, marks):
        SchoolMember.__init__(self, name, age)
        self.marks = marks
        print '(Initialized Student: %s)' % self.name

    def tell(self):
        SchoolMember.tell(self)
        print 'Marks: "%d"' % self.marks

t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)

print # prints a blank line

members = [t, s]
for member in members:
    member.tell() # works for both Teachers and Students

这个是python简明教程的源码,已经很直观了。

下课了。。。

资料来源:python简明教程

 

 

 

posted @ 2013-01-27 23:20  Daniel大东  阅读(242)  评论(0编辑  收藏  举报