1〉首先,怎么写一个类,用个例子
class Student(object):
def __init__(self,name,score,gender):
self.__name=name
self.__score=score
self.__gender=gender
def get_name(self):
return self.__name
def print_score(self):
print('%s:%s'%(self.__name,self.__score))
def set_score(self,score):
if 0<=score<=100:
self.__score=score
else:
raise ValueError('bad score')
def get_grade(self):
if self.__score>=90:
return 'A'
elif self.__score>=60:
return 'B'
else:
return 'C'
def get_gender(self):
if self.__gender=='男':
return 'man'
elif self.__gender=='女':
return 'woman'
需要注意的点:
类名后面的(object)是可以忽略的。(只有当子类继承父类的时候,类名后面的括号里面是父类的名字,下面会有例子)
def __init__(self){}这个类似构造函数,init前后分别有两个下划线,一共有四个下划线,括号里面的self是必写的一个,但是不会用到它(我个人的理解是this,仅仅个人认为)
特别注意get和set方法,和jsp中的方法也类似。
2〉以上仅仅是一个类,下面讲讲类的继承和多态:
class Animal(object):
def run(self):
print('Animal is running...')
class Dog(Animal):
def run(self):
print('Dog is running...')
class Cat(Animal):
def run(self):
print('Cat is running...')
def run_twice(animal):
animal.run()
如上代码中Animal是父类,Dog和Cat都是Animal的子类,通过在类名后面+(父类的类名)实现
def run_twice(animal):
animal.run()
其中,这个函数是实现多态的
>>> run_twice(Animal())
Animal is running...
>>> run_twice(Dog())
Dog is running...
这个是 调用的结果
3〉了解类属性和实例属性:简单的说 类属性是在类中直接写的属性,实例属性指在类外重写的属性。一般,先看有没有实例属性,再看有没有类属性。
class CocaCola(object):
calories=140
sodium=45
total_carb=39
caffeine=34
def __init__(self,logo_name):
self.logo_name=logo_name
def drink(self):
print('You got{}cal energy!'.format(self.calories))
class zeroCola(CocaCola):
calories=0
>>> coke_a.drink()
You got0cal energy!
子类会覆盖父类中相同的属性的值。
4〉认识除了__init__之外的内置函数
class Employee:
'所有员工的基类'
empCount=0
def __init__(self,name,salary):
self.name=name
self.salary=salary
Employee.empCount+=1
def displayCount(self):
print ("Total Employee %d"% Employee.empCount)
def displayEmployee(self):
print("Name:",self.name,"Salary:",self.salary)
print("Employee.__doc__:",Employee.__doc__)
print("Employee.__name__:",Employee.__name__)
print("Employee.__module__:",Employee.__module__)
print("Employee.__bases__:",Employee.__bases__)
print("Employee.__dict__:",Employee.__dict__)
结果如下:
Employee.__doc__: 所有员工的基类
Employee.__name__: Employee
Employee.__module__: __main__
Employee.__bases__: (
Employee.__dict__: {'__weakref__':
#****************************************************************************
除此之外,我还找到一些