文章目录
类
创建类
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
方法__init__()
init()时一个特殊的方法,每当根据类创建新实例时,Python都会自动运行它。并且__init__()类中形参self必不可少,而且必须位于其他形参的前面。
self
以self为前缀的变量可供类中的所有方法使用,可以通过类的任何实例来访问。可以通过实例访问的变量称为属性。
访问属性
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
p1 = Person('张三',18)
print(f'{p1.name} {p1.age}')
Python创建一个属性时,默认值为0.
调用方法
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
p1 = Person('张三',18)
p1.self_introduction()
继承
一个类继承另一个类时,将自动获得另一个类的所有属性和方法。原来的类称为父类,新的类称为子类。子类继承了父类所有的属性和方法,同时还可以定义自己的属性和方法。
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
def work_name(self):
print(self.work)
class Man(Person):
def __init__(self,name,age,work):
super().__init__(name,age)
self.work=work
m1 = Man('张三',20,'程序猿')
m1.self_introduction()
m1.work_name()
子类的方法__init__()
创建子类时,父类必须包含在当前文件中,且在子类的前面。定义子类时应该在子类的括号中指定父类的名称。
super()是一个特殊的函数,能够让你调用父类的方法。
重写父类中的方法
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
def work_name(self):
print(self.work)
class Man(Person):
def __init__(self,name,age,work):
super().__init__(name,age)
self.work=work
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁,我的工作是{self.work}')
m1 = Man('张三',20,'程序猿')
m1.self_introduction()
将实例作属性
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
def work_name(self):
print(self.work)
class work:
def __init__(self,work_name='程序猿'):
self.work_name=work_name
def describe_work(self):
print(f'工作是{self.work_name}')
class Man(Person):
def __init__(self,name,age):
super().__init__(name,age)
self.work=work()
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
m1 = Man('张三',20)
m1.self_introduction()
m1.work.describe_work()
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
def work_name(self):
print(self.work)
class work:
def __init__(self,work_name,salary):
self.work_name=work_name
self.salary=salary
def describe_work(self):
print(f'工作是{self.work_name},工资是{self.salary}')
class Man(Person):
def __init__(self,name,age,work_name,salary):
super().__init__(name,age)
self.work=work(work_name,salary)
def self_introduction(self):
self.work.describe_work()
print(f'大家好,我叫{self.name},今年{self.age}岁')
m1 = Man('张三',20,'程序猿',10000)
m1.self_introduction()
m1.work.describe_work()
导入类
为了使代码更加的整洁,允许类储存在模块中,然后在主程序中导入所需的模块。
导入单个类
#person.py
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
def work_name(self):
print(self.work)
from person import Person
p1 = Person('张三',20)
p1.self_introduction()
从一个模块导入多个类
#person.py
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
def self_introduction(self):
print(f'大家好,我叫{self.name},今年{self.age}岁')
def work_name(self):
print(self.work)
class work:
def __init__(self,work_name,salary):
self.work_name=work_name
self.salary=salary
def describe_work(self):
print(f'工作是{self.work_name},工资是{self.salary}')
class Man(Person):
def __init__(self,name,age,work_name,salary):
super().__init__(name,age)
self.work=work(work_name,salary)
def self_introduction(self):
self.work.describe_work()
print(f'大家好,我叫{self.name},今年{self.age}岁')
from person import Person,Man
p1 = Person('张三',20)
p1.self_introduction()
print()
m1 = Man('李四',20,'程序猿',10000)
m1.self_introduction()
s
导入模块中的所有类
语法:from module_name import *。
这些导入类和导入函数十分类似。
在模块中还可以导入另一个模块。
使用别名
当要创建大量实例时,使用别名可以简化代码,别名的使用和函数别名的使用类似。
Python标准库
Python标准库是一组模块,安装的Python包含了它,我们可以使用标准库中的任何函数和类,只需要在开头用import语句 。
randint()
from random import randint
print(randint(1,6))
randint(a,b)是随机返回一个在a,b中的正数,包括a,b。
虽然很多情况中是左闭右开,但是randint()中是左右都闭。
choice()
from random import choice
number=list(range(10))
print(choice(number))
choice()是将列表或元组作为参数,并随机返回其中的一个元素。
类编写风格
类名一个采用驼峰命名法,即类名中每个单词的首字母都大写,而不使用下划线。实例名和模块名都用小写,并使用下划线。
每个类都应该在 类定义后包含一个文档字符串。简单的描述类的作用。
一个空行分隔方法;模块中用两个空行分隔类。
当需要同时导入标准库中的模块时,应该先导入标准库中的模块,然后用一行空行,再导入自己的模块。