书里面用了泥鳅、黄鳝、鱼的例子,挺好理解的。
给泥鳅A命名小丽。
那么鱼就是一个类(class),泥鳅也是一个类(class),小丽是泥鳅的一个实例(instance)。
鱼不是一个具体的东西,而是一个用来描述具有同类属性的实例的概括性词汇。
泥鳅也是鱼的一个类。
于是有:对象属于某个类,而某个类又属于另一个类。
下面代码的注释也是习题。
## Animal is-a object (yes, sort of confusing) look at the extra credit
class Animal(object):
pass
## ??
class Dog(Animal):
def __init__(self, name):
## ??
self.name = name
## ??
class Cat(Animal):
def __init__(self, name):
## ??
self.name = name
## ??
class Person(object):
def __init__(self, name):
## ??
self.name = name
## Person has-a pet of some kind
self.pet = None
## ??
class Employee(Person):
def __init__(self, name, salary):
## ?? hmm what is this strange magic?
super(Employee, self).__init__(name)
## ??
self.salary = salary
## ??
class Fish(object):
pass
## ??
class Salmon(Fish):
pass
## ??
class Halibut(Fish):
pass
## rover is-a Dog
rover = Dog("Rover")
## ??
satan = Cat("Satan")
## ??
mary = Person("Mary")
## ??
mary.pet = satan
## ??
frank = Employee("Frank", 120000)
## ??
frank.pet = rover
## ??
flipper = Fish()
## ??
crouse = Salmon()
## ??
harry = Halibut()
==================================================================================================
现在开始注释练习
#-*-coding:utf-8-*-
## Animal is-a object (yes, sort of confusing) look at the extra credit
class Animal(object):
pass
## Dog is-a Animal
class Dog(Animal):
def __init__(self, name):
## Dog has-a name
self.name = name
## Cat is-a Animal
class Cat(Animal):
def __init__(self, name):
## Cat has-a name
self.name = name
## Person is-a object
class Person(object):
def __init__(self, name):
## Person has-a name
self.name = name
## Person has-a pet of some kind
self.pet = None
## Employee is-a Person
class Employee(Person):
def __init__(self, name, salary):
## Employee has-a name hmm what is this strange magic?
## 子类调用父类时候使用 super(子类名, self).方法名(参数)
## 子类 Employee 要调用父类 Person 的 name ,因为这里本来没有 name 这个东西
super(Employee, self).__init__(name)
## Employee has-a salary
self.salary = salary
## Fish is-a object
class Fish(object):
pass
## Salmon is-a Fish
class Salmon(Fish):
pass
## Halibut is-a Fish
class Halibut(Fish):
pass
## rover is-a Dog
rover = Dog("Rover")
## satan is-a Cat
satan = Cat("Satan")
## mary is-a Person
mary = Person("Mary")
## mary has-a pet named satan
mary.pet = satan
## frank is-a Employee ,frank has-a salary = 120000
frank = Employee("Frank", 120000)
## frank has-a pet named rover
frank.pet = rover
## 把 flipper 设为类 Fish 的一个实例
flipper = Fish()
## Salmon 三文鱼,把 crouse 设为 Salmon 的一个实例
crouse = Salmon()
## Halibut 大比目鱼,把 harry 设为 Halibut 的一个实例
harry = Halibut()