定义一个类:里面可以定义相应的属性和方法
定义类一个很关键的目的就是:便于多次利用类中的方法和属性
# 定义一个类:里面可以定义相应的属性和方法
class Person:
name = 'kang'
age = 22
# 在类里面还可以定义方法,一般来说使用类里面的东西就需要用到self
# self的意思就是,创建实例以后,self就是指向这个实例本身
def greet(self):
print('Hi, my name is' + self.name)
# 创建一个类对象
p1 = Person()
# 创建好对象以后就可以调用属性和方法
p1.greet()
# 还可以对里面的对象进行修改操作
p1.age = 23
print(p1.age) # 23 已经修改结束了
python当中类的初始化 init 和 self – 初始化操作
写类的时候如果我们没有用到继承什么的可以直接在类名后面用冒号 : ,用到继承或者多态我们会在类名后面加上()
class Person:
# 使用init和self来初始化
# def __init__(self):
# # self 就是指向类,然后进行指定即可
# self.name = 'Alice'
# 或者实在init中加上别的属性,在进行类的实例化要加上相应属性,类的实例化加上相应属性
def __init__(self, init_name):
self.name = init_name
def greet(self):
# 空格是要在引号里面使用的
print('Hi, my name is ' + self.name)
p1 = Person('kang')
p1.greet()
继承:
- 两个类里面有很多共性,在一个类里面书写相同的内容,另一个类进行继承操作,可以减少demo的书写。
- 用到继承,类名后面要加上()
# 定义一个动物类
class Animals():
def __init__(self, init_name):
self.name = init_name
def greet(self):
# 打印的时候可以使用+, 也可以使用百分号来--中间不用使用逗号
print('Hi, my name is %s' %self.name)
# Dog类直接继承Animals类,初始化名字的效果也有了
class Dog(Animals):
def greet(self):
print('汪汪!my name is %s' %self.name)
def run(self):
print('I can run!')
# 测试
dog = Dog('teddy')
dog.greet() # 汪汪!my name is teddy
多态
- 让函数的调用和代码的运行更加的方便
- 父类下面有很多的子类,然后想要调用子类中的方法
- 在于不同的类中定义有相同的方法名,这样我们就可以不考虑类而统一用一种方式去使用对象。
class Animals():
def __init__(self, name):
self.name = name
def greet(self):
print('Hello, My name is {}'.format(self.name))
# 继承
class Dog(Animals):
def greet(self):
print('Hello, My name is {}'.format(self.name))
class Cat(Animals):
def greet(self):
print('Hello, My name is {}'.format(self.name))
# 多态的应用:对于子类方法的任意调用
def hello(animal):
animal.greet()
# 测试,初始化对象,利用对象对方法进行调用,上面几个例子当中,子类都有相同的方法,想要对多个子类进行调用,可以使用多态
# 直接每次使用子类去创建对象,实现相应的调用即可
dog = Dog('dog') # 'dog'就传给了animal了
hello(dog) # Hello, My name is dog
类中迭代器的使用 – 作为了解,用的较少
使用类来完成对斐波那契数列的构造!!!
class Fib():
def __init__(self):
self.a, self.b = 0, 1
# self.__a, self.b = 0, 1 会发生报错现象 'Fib' object has no attribute 'a',想要保护,可以在属性前面加上两个下划线__
def __iter__(self):
return self
def __next__(self):
# 一直这样迭代下去即可
self.a, self.b = self.b, self.a + self.b
return self.a
# 上面的结果运行结束以后生成的就是一个数列,后面进行迭代即可
# 其实上面就是定义了一个算法,用来求取斐波那契数列,上面那个式子已经可以得到一个迭代数列,生成的就是一个数列
# 测试:先创建对象,上面那个类最后生成的结果就是一个数组/队列
fib = Fib()
for i in fib:
if i > 10:
break
print(i) # 1 1 2 3 5 8



