Pyhon学习(五)函数的定义、模块、函数导入、类的创建

一、函数定义实例:

def f(language):
    print("hello "+ language)

带有参数的函数

#使用默认值时,在形参列表中必须先列出没有默认值的形参,在列出有默认值的实参
# def describe_pet(animal_type, pet_name='mike'):
#     print("My animal_type is "+animal_type+", it's name is "+pet_name)
# describe_pet('dog')
# describe_pet(animal_type='hamster',pet_name='harry')

带有返回值的函数

def make_album(s_name, b_name):
    singer={s_name:b_name}
    return singer

while True:
    s_name = input("请输入歌手的姓名:")
    b_name = input("请输入专辑的名字:")
    if s_name == 'q' or b_name == 'q':
        break;
    print(make_album('la','db'))

二、模块
模块 是扩展名为.py的文件 import 模块名

#包含初始和结束
from random import randint
x = randint(1,6)
print(x)

三、函数的导入
from 包名 import 函数名 as 别名

四、类名的导入
推荐导入整个模块而不是导入所有的类,并使用 module_name.class_name 语法来访问类
from 模块 import 类名
from 包名.文件名 import 类名
举例:

from day3.class_demo3 import User

五、类的创建
init(self)方法:是一个特殊的方法,每当在创建一个实例的时候会自动调用,类似于java的构造函数
形参self必不可少且必须位于其他参数前面,它是指向实例本身的引用
作用:让实例能够访问类中的属性和方法

class Restaurant():
    def __init__(self,restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type

    def describe_restaurant(self):
        print(self.restaurant_name+","+self.cuisine_type)

    def open_restaurant(self):
        print('餐厅正在营业')

六、类的继承
创建子类实例的时候,需要先给父类的所有属性赋值
所以子类的init()方法需要调用父类的init()方法

class IceCreamStand(Restaurant):
    def __init__(self,restaurant_name, cusine_type):
        super().__init__(restaurant_name,cusine_type)
        self.favor = ['cake','carrot']
    def describe_restaurant(self):
        print(self.restaurant_name+","+self.cuisine_type)
        print("喜欢的食物有:")
        for food in self.favor:
            print(food)

ice = IceCreamStand('he','chong')
ice.describe_restaurant()

举例:

from day3.class_demo3 import User
class Admin(User):
    def __init__(self, first_name, last_name):
        super().__init__(first_name, last_name)
        self.privileges = [
            "can add post",
            "can delete post",
            "can ban user"
        ]

    def show_privileges(self):
        print(self.first_name+":"+self.last_name)
        for str in self.privileges:
            print(str)

host = Admin('he','chong')
host.show_privileges()
#心得
#在编写此继承的程序中出现了很多问题,在导入文件的时候出现了问题
#我创建了一个python包,所以在导入的时候出现导入不了类的情况
#在调用super()的时候没有加括号,在调用super()的init的方法时候添加了self
#在添加属性privileges的时候没有加self,导致show_privileges的时候显示未定义privileges
#然后创建一个实例的时候,由于方法show_privileges的缩进出现错误,导致报错显示函数未定义

#self是一个指向实例本身的引用,让实例能够访问类中的属性和方法
#self类似于java中的this,但是这个this是不可以省略的,凡是本类中的所有属性都要加self
#super()方法将父类和子类关联起来,能够调用父类的init方法

猜你喜欢

转载自blog.csdn.net/u_hcy2000/article/details/82531435