python第九章 类

# 创建
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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章