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简明教程