# 创建
class Dog():
def __init__(self,n,a):
self.name=n
self.age=a
def sit(self):
print(self.name.upper()+' can sit!!!')
mydog=Dog('PI',22)
print('mydog has a name:'+mydog.name.title())
mydog.sit() #不需要参数 直接使用
#默认值
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000')
#注意后面所有函数对于参数的引用必须要用self.
mycar=cars('BMW',99)
mycar.car()
#直接修改属性的值
mycar.year=2018
mycar.brand='BAOMA'
mycar.car()
#通过方法修改属性的值
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000')
def modify(self,ye):
self.year=ye
mycar=cars('BWM',9999)
mycar.modify(2000) #可以修改默认值/非默认值的参数
mycar.car()
#modify函数也可以设置成带有限制的
def modify(self,ye):
if ye >= self.price:
self.price=ye
else:
print('You cannot alter the price!')
#继承
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000 RMB')
class electric(cars):
def __init__(self,bb,pp):
super().__init__(bb,pp)
#与上一行的对应 当然和父类的可以不对应 但是数量一定一致
mytesla=electric('BBBBBB',6666)
mytesla.car()
#继承父类以后可以定义新属性,新方法
class electric(cars):
def __init__(self,bb,pp):
super().__init__(bb,pp)
#与上一行的对应 当然和父类的可以不对应 但是数量一定一致
self.quality='Amazing!!!!!'
def newcar(self):
print("my electric car is so "+self.quality)
mytesla=electric('BBBBBB',6666)
mytesla.newcar()
#如果子类重写父类中的方法,那么按照重写的来
#将实例作为属性(类中类)
#父类
class cars():
def __init__(self,brand,price):
self.brand=brand
self.price=price
self.year=2019
def car(self):
print("The brand of my car:"+self.brand)
print('It was bought in '+str(self.year)+' at '+str(self.price)+'0000 RMB')
#后期引用的类
class battery():
def __init__(self,battery_size=80):
self.battery_size=battery_size
def describe_battery(self):
print("The car has a "+str(self.battery_size)+" -kwh battery.")
#子类
class electric(cars):
def __init__(self,bb,pp):
super().__init__(bb,pp)
self.battery=battery()
#实例
my_tesla=electric('qqq',8888)
my_tesla.battery.describe_battery()
#被引用的类中可以与其他的函数来进行更复杂的操作
#导入另一个.py文件(模块)的类 目的是为了主程序的简洁
from im import cars
my_new_car=cars('haha',2999999)
my_new_car.car()
#类似于导入函数
#导入某些类
from im import cars,electric
my_new_car=cars('haha',2999999)
my_new_car.car()
#导入整个模块
import im
my_car=im.cars('BMW',99999)
my_car.car()
#导入全部类
from im import *
#最推荐的import name 这种方法 类的来源很明确
#模块中的模块
#一个模块中的类的使用依赖于其他模块的类
#car1.py
class car():
--snip--
#car2.py
from car1 import car
class electric(car):
--snip--
#即在car2中类car是从car1中拿过来的 不拿就出错
from car1 import car
from car2 import electric
#第三个模块需要使用上面的两个类
#python标准库作为一种模块 其中包含一些类
#OrderedDict可以记录键值的配对顺序
from collections import OrderedDict
favorite_languages =OrderedDict()
favorite_languages['Jerry']='C++'
favorite_languages['Mory']='python'
favorite_languages['Tom']='ruby'
for name,language in favorite_languages.items():
print(language.title()+" is "+name.title()+"'s "+"favorite language.")
#导入random.py里面的函数randint,自动生成随机数
from random import randint
x=randint(1,8)
print(x)
#练习:根据筛子面数 利用上述函数和类生成随机数
class Die():
def __init__(self,sides=6):
self.sides=sides
def roll_die(self):
return randint(1,self.sides)
random1=Die()
for i in range(10):
print(random1.roll_die())
random2=Die(10)
for i in range(10):
print(random2.roll_die())
random3=Die(20)
for i in range(10):
print(random3.roll_die())
#python标准库:https://pymotw.com/3/
python第九章 类
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.