1.认识类
使用类可以模拟任何事物。以下面的people类为例,python中以首字母大写为类名,创建的函数叫方法。_init_方法是特殊的方法,每次创建新实例时都调用它。其中形参self是必有的且必在最前面,每次调用方法创建实例时都将自动传入实参self,每个与类关联的方法被调用时也要自动传入实参self。它是指向实例本身的引用,让实例能够访问类的属性和方法。
class People():
def __init__(self,name,age):
"""初始化属性name,age"""
self.name = name
self.age = age
def eat(self):
print(self.name.title() + " is eating")
def drink(self):
print(self.name.title() + " is drinking")
my_people = People('z',16) #创建实例
print("I am "+my_people.name.title()) #访问属性
print("I am "+str(my_people.age)+" years old")
my_people.eat() #调用方法
my_people.drink()
属性的值可以预设也可以修改,方法有通过实例修改,使用方法修改或者通过方法递增特定的值。
my_people.act = 20 #通过实例修改属性值,该语句加在调用方法前即可
通过增加updateachievement方法修改属性的值
class People():
def __init__(self,name,age):
"""初始化属性name,age,act"""
self.name = name
self.age = age
self.ach = 0
def eat(self):
print(self.name.title() + " is eating")
def drink(self):
print(self.name.title() + " is drinking")
def achievement(self):
print("my achievement are "+str(self.ach))
def updateachievement(self,a):
self.ach = a
my_people = People('z',16) #创建实例
my_people.ach = 20 #通过实例修改属性值
print("I am "+my_people.name.title()) #访问属性
print("I am "+str(my_people.age)+" years old")
my_people.eat() #调用方法
my_people.drink()
my_people.updateachievement(23)
my_people.achievement()
设置方法incrementachievement实现属性值的递增
class People():
def __init__(self,name,age):
"""初始化属性name,age,act"""
self.name = name
self.age = age
self.ach = 0
def eat(self):
print(self.name.title() + " is eating")
def drink(self):
print(self.name.title() + " is drinking")
def achievement(self):
print("my achievement are "+str(self.ach))
def updateachievement(self,a):
self.ach = a
def incrementachievement(self,b):
self.ach +=b
my_people = People('z',16) #创建实例
my_people.ach = 20 #通过实例修改属性值
print("I am "+my_people.name.title()) #访问属性
print("I am "+str(my_people.age)+" years old")
my_people.eat() #调用方法
my_people.drink()
my_people.updateachievement(23)
my_people.incrementachievement(100)
my_people.achievement()
2.继承
对于特殊的类可以通过继承原有类的所有方法和属性进行编写而不必从新开始,原有类叫父类,新的类叫子类。而且子类可以有自己独特的类。对父类中不符合子类的方法,在子类中重写一个同名的方法即可让python忽略父类的方法转而执行子类的。
class People():
def __init__(self,name,age):
"""初始化属性name,age,act"""
self.name = name
self.age = age
self.ach = 0
def eat(self):
print(self.name.title() + " is eating")
def drink(self):
print(self.name.title() + " is drinking")
def achievement(self):
print("my achievement are "+str(self.ach))
def updateachievement(self,a):
self.ach = a
def incrementachievement(self,b):
self.ach +=b
class student(People): #创建子类
def __init__(self,name,age):
super().__init__(name,age) #初始化父类的属性,super函数将父子关联起来
self.hight = 175 #初始化特有属性
def hig(self):
print(self.hight)
my_people = People('z',16) #创建实例
my_people.ach = 20 #通过实例修改属性值
print("I am "+my_people.name.title()) #访问属性
print("I am "+str(my_people.age)+" years old")
my_people.eat() #调用方法
my_people.drink()
my_people.updateachievement(23)
my_people.incrementachievement(100)
my_people.achievement()
my_student=student('C',18)
print(my_student.name)
print(my_student.age)
my_student.hig()