目录
- 类
- 对象的方法
__init__
- 类和对象的变量
- 继承
类
- 对象可以使用普通的’属于’对象的变量存储数据;
- 属于一个对象或类的变量被称为域;
- 对象也可以使用’属于’类的函数来具有功能,这样的函数被称为类的方法;
- 域和方法可以合称为类的属性。域有两种类型——属于每个实例/类的对象或属于类本;
- 它们分别被称为实例变量和类变量。类使用class关键字创建。类的域和方法被列在一个缩进块中。
1. 类的定义
class Person:
pass
2. 类实例的创建
class Person:
pass
#创建对象
p = Person()
3. 对象的方法(类的方法)
类的方法与普通的函数的区别:类方法必须有一个额外的第一个参数名称(self),但是在调用这个方法时,无需为这个参数赋值。
class Person:
#定义的类方法有self这个参数
def sayHi(self, name):
print('Hello, ', name)
p = Person('elson')
p.sayHi()
Python中的self相当于Java中的this。
对象调用方法的实质:
有一个类名为MyClass,一个对象实例MyObject,当该实例调用方法MyObject.method(arg1,arg2)时,Python内部自动转换为MyClass.method(MyObject, arg1, arg2)。
4. __init__
方法(类似Java中的构造方法)
__init__
方法在类的一个对象被建立时,马上运行。可以用来做一些初始化操作。
class Person:
def __init__(self, name):
self.name = name
def sayHi(self):
print('Hello, my name is', self.name)
p = Person('Elson')
p.sayHi()
__del__
方法:它在对象消逝的时候被调用。在这个方法里面,可以做一些内存释放。
但很难保证它的具体运行时间(类似Java垃圾回收机制),如果需要制定它执行,就得显示的调用该方法。
5. 类和对象的变量
类的变量(类似Java的静态变量):由一个类的所有对象(实例)共享使用。
对象的变量:由类的每个对象/实例拥有。
类的变量和对象的变量:它们根据是类还是对象拥有这个变量而区分。
6. 继承
#!/usr/bin/python
# Filename: inherit.py
class SchoolMember: #基类
def __init__(self, name, age):
self.name = name
self.age = age
def tell(self):
print('Name:"%s" Age:"%s"' % (self.name, self.age))
class Teacher(SchoolMember): #子类(继承SchoolMember)
def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age) #调用父类的方法
self.salary = salary
def tell(self):
SchoolMember.tell(self)
print 'Salary: "%d"' % self.salary
class Student(SchoolMember): #子类
def __init__(self, name, age, marks):
SchoolMember.__init__(self, name, age)
self.marks = marks
def tell(self):
SchoolMember.tell(self)
print('Marks: "%d"' % self.marks)
t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)
members = [t, s]
for member in members:
member.tell() # works for both Teachers and Students