标签:注释 注意事项 ora 帮助文档 编写 就是 fat self 输出内容
定义类 在Python中,类的定义使用class关键字来实现 语法如下: class className: "类的注释" 类的实体 (当没有实体时 使用pass代替)
class flyBord: """鸟类""" pass #这里我们并没有实体所以我们使用pass代替
这就是一个类的最基本的定义
#eg:定义一个狗类 class Dog: def __init__(self): #方法名为 __init__ 形参必须要带一个self 当然也可以别名 self习惯使然 print("我是一只小狗") #创建一个实例 dog_1 = Dog() #创建类的实例,也就是调用这个类
注意这里的方法__intit__(self)下划线是前面两个下划线,后面两个下划线,并不是一个下划线。
我是一只小狗
当一个类的实例被创建出来的时候__init__(self)方法就会被自动调用,类似于java,C#中的构造函数。
#eg:定义一个猫类 class cat: """猫类""" name = "小花" #类属性 可以通过类来调用 # __init__为实例方法 def __init__(self): #self为实例参数 self.name_1 = "小强" #实例属性 定义时必须要用实例参数.出来
#cat_1为实例名称 cat_1 = cat()
print(cat.name) #调用它的类属性
print(cat_1.name) #通过实例参数调用类属性
print(cat_1.name_1) #调用实例属性
小花
小花
小强
可以根据调用时使用的属性以及输出结果看到:
通过类名只可以调用类属性
通过实例名称可以调用类属性也可以调用实例属性
#通过@property创建用于计算的属性的语法格式如下: #eg: """ @property @property 装饰器 def methodname(self): methodname:用于指定方法名,一般使用小写字母开头。该名称最后将作为创建的属性。 self:必要参数 block block:方法体,实现具体的功能,可以通过pass代替 """
#eg: class Rect: def __init__(self,height,width): self.height = height self.width = width @property def arae(self): return self.height*self.width
temp = Rect(800,600) print(temp.arae)
480000
可以看到我们在通过temp实例调用方法arae()时并没有带小括号(),因为arae()方法已经被我们写成了计算属性
"""
class ClassName(baseclasslist): #ClassName派生类的类名 baseclasslist:被继承的父类;被继承的父类可以有多个
‘‘‘类的帮助文档‘‘‘ 帮助文档 可以在创建对象的时候输入类名和‘(‘时可以查看
statement 类体 可以使用pass替代
"""
class father: def __init__(self): print("我是父亲") class mather: def __init__(self): print("我是母亲") class son(father,mather): pass
son = son() #输出结果: 我是父亲
可以看到子类是没有实例函数__init__()的,
但是创建实例的时候依然有输出结果,并且是调用了父类father的实例函数,
但是并没有调用父类mather类的实例函数,可见当子类继承了父类之后,
子类也会继承父类的函数,包括实例函数,但是只会继承第一个父类的函数
#eg: class Fruit: """水果类""" color = "绿色" def harvest(self,color): print("水果是"+color+"的!") print("水果已经收获.....") print("水果原来是"+self.color+"的!") class Orange(Fruit): """橘子类继承自水果类""" color = "橙色" def __init__(self): print("\n我是橙子") def harvest(self,color): #重写父类函数harvest print("橘子是"+color+"的!") print("橙子已经收获......") print("橙子原来是"+self.color+"的!") #创建Orange的对象 oran = Orange() oran.harvest("黄色")
我是橙子 #子类Orange的构造函数 橘子是黄色的! 橙子已经收获...... 橙子原来是橙色的! #这三句是子类继承自父类Fruit的函数,但是函数体与父类的函数体不同也就是我们说的重写
可以看到我们调用了继承自Fruit的方法harvest但是输出内容与父类的方法体不同,是因为我们在子类Orange中将harvest函数的函数体重写了
""" 练习 设计药品类medicine """ from datetime import datetime class Medicine: name = ‘‘ price = 0 PD = ‘‘ Exp = ‘‘ def __init__(self,name,price,PD,Exp): self.name = name #药名 self.price = price #价格 self.PD = PD #生产日期 self.Exp = Exp #失效日期 def get_name(self): return self.name def get_GP(self): start = datetime.strptime(self.PD, ‘%Y-%m-%d‘) end = datetime.strptime(self.Exp,‘%Y-%m-%d‘) return (end - start).days med = Medicine(name=‘格列宁‘,price=25000,PD=‘2018-9-8‘,Exp=‘2020-9-8‘) name = med.get_name() GP = med.get_GP() print(name) print(GP)
格列宁
731
Python中类的声明,使用,属性,实例属性,计算属性及继承,重写
标签:注释 注意事项 ora 帮助文档 编写 就是 fat self 输出内容
原文地址:https://www.cnblogs.com/gongdada/p/10891878.html