根据类来创建对象被称为实例化
根据约定,在python中,首字母大写的名称指的是类,
小写的指的是根据类创建的实例
一个简单例子:
class Dog(): def __init__(self,name,age): self.name=name self.age=age def sit(self): print(self.name+" is sitting now") a=Dog('haski',5) print(a.age) a.sit() >>> 5 haski is sitting now
__init__() 是一个特殊的方法,每当你根据Dog类创建新实例时,python都会自动执行他
获得实例的属性:
使用点句表示法,如 a.name my_dog.age
调用方法
eg:
a.sit() my_dog.roll()
使用类和实例
1.给属性指定默认值
class Dog(): def __init__(self,name,age): self.name=name self.age=age self.color='black' def sit(self): print(self.name+" is sitting now")
这里的self.color就是一个属性,而'black'则是默认值
2.修改默认值
方法一:直接修改
my_dog=Dog('haski',5) my_dog.color='blue'
方法二:通过方法修改属性的值
class Dog(): def __init__(self,name,age): self.name=name self.age=age self.color='black' def sit(self): print(self.name+" is sitting now") def update_color(self,color): self.color=color a=Dog('haski',5) a.update_color('blue') print(a.color) >>> blue
除此之外,还可以通过添加一些逻辑(如判断语句),来禁止任何人非法修改属性的值,如把某属性的值降低
还可以修改方法,来递增属性的值,如:
def update(self,point): self.point+=point
从而达到递增的效果
继承
编写类时,并非总是需要从空白开始,如果你要编写的类是另一种现成类的特殊版本,可以使用继承
一个类继承另一个类时,它将自动获得另一个类的所有属性的方法,
原有的类称为父类,新的类称为子类,子类继承了其父类的所有属性和方法,
同时还可以定义自己的属性和方法
简单例子:
class Haski(Dog): def __init__(self,name,age): super().__init__(name,age) a=Haski('betty',5) print(a.name) >>> betty
super()是一个特殊函数,帮助python将父类和子类关联起来
super()让Haski实例包含父类的所有属性
创建子类时,你可以根据需求添加任意数量的属性和方法
倘若父类的方法或者属性与子类有误差,或者子类不适用父类的方法,可以重写父类的方法,直接覆盖
导入类:
随着你不断的给类添加功能,文件可能会变的很长,为遵循python的总体理念,应让文件尽可能整洁
导入单个类
专门创建一个Dog.py,在另外一个程序里调用
>>> from Dog import Dog >>> my_dog=Dog('ammy',5) >>> my_dog.sit() ammy is sitting now
可以在一个模块(一个.py文件)中存储多个类,也可以从一个模块中导入多个类
eg:
from Dog import Dog,Haski
你还可以导入整个模块: import Dog
再用句点表示法访问所需要的类
my_dog=Dog.Dog('ammy',5)
导入模块中所有的类:
from Dog import *
这种方式虽然简单省事,但是不推荐使用,如果引入重名的类,将引发难以诊断的错误
模块random包含以各种方式生成随机数的函数,
其中的randint()返回一个位于指定范围内的整数eg: from random import randint x=randint(1,6) print(x) >>> 1