def 函数名(参数列表): "函数_文档" 执行的语句 |
如果没有执行语句可以使用pass |
赋值:
按顺序
关键字:允许赋值的顺序和定义的顺序不一致
默认值:定义函数可以给参数默认值
不定长参数 *
在参数前放置*
通常放在参数的最后
定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域
要求:
|
2。 猜数游戏 游戏规则: 随机产生四位数字 ABCD 然后让用户输入:四位的数字 根据位置进行判断: 如果位置对,数也对 1A,如果数字对1B 例如:随机产生的数字是: 1234 用户输入的数字是 1924 2A1B 用户输入的数字是 5678 0A0B 用户输入的数字是 4123 0A4B 用户输入的数字是 1234 恭喜答对了 要求用户只能猜10次,同时要求产生的随机数每个位置的数字不能相同,例如 1123 不合法的随机数 考虑使用函数开发
|
# def factorial(num): |
|
类 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
对象 对象是类的实例。通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
类变量 变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
数据成员 类变量或者实例变量, 用于处理类及其实例对象的相关的数据。
方法重写 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
局部变量 定义在方法中的变量,只作用于当前实例的类。
实例变量 在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。
继承 即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例,Dog是一个Animal)。
实例化 创建一个类的实例,类的具体对象。
方法 类中定义的函数。
使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:
class 类名 : ‘类的帮助信息‘ #类文档字符串 class_suite #类体 |
变量=类名() 变量=类名(参数) |
class Bases:
#构造方法 def __init__(self,name): self.name=name self.hp=100 self.power=10 def show(self): print("hello")
t1=Bases("张三") print(t1) print(t1.name) print(t1.hp) print(t1.power) t1.show() |
通过 . 访问
通过函数访问
getatter(对象名,属性名) 访问对象属性 setatter(对象名,属性名,值)设置一个属性的值,如果属性不存在,则会创建一个新的属性 hasatter(对象名,属性名)检查一个属性是否存在 delatter(对象名,属性名)删除属性 |
类属性不属于任意一个对象
自定义类变量
class Student: number=0 def __init__(self,name): self.name=name Student.number+=1
stu1=Student("aa") stu2=Student("cc") stu3=Student("cc") print(Student.number) |
内置类变量
_ _dict_ _ 类属性 (包含一个字典,由类的数据属性组成)
_ _doc_ _ 类的文档字符串
_ _name_ _ 类名
_ _module_ _ 类定义所在的模块
_ _bases_ _:类的所有父类构成的元素
使用 def进行定义,第一个参数必须是self,在使用方法无需给self赋值
使用def进行定义,参数为cls, 使用@classmethod进行注解,使用类名进行调用
class Student: number=0 def __init__(self,name): self.name=name Student.number+=1 @classmethod def showNumber(self): print(Student.number)
Student.showNumber() |
以双_ _开头,私有属性或方法不能在类的外部被使用或直接访问
@property的用法与神奇之处 (装饰器),一旦给函数加上一个装饰器@property,调用函数的时候不用加括号就可以直接调用函数了
class Student: def __init__(self,name,score): self.name=name self.__score=score def show(self): print(self.name,self.__score) self.__hello() @property def score(self): print(self.__score)
def setScore(self,score): self.__score=score
def __hello(self): print("hello")
stu1=Student("小明",59) print(stu1.name) # print(stu1.__score) stu1.show() #stu1.score() stu1.score
|
class 类名(父类名):
|
在创建子类的过程中,你需要手动调用父类的构造函数__init__来完成子类的构造。
在子类中调用父类的方法时,需要加上父类的类名前缀,且需要带上self参数变量。比如SchoolMember.tell(self), 这个可以通过使用super关键词简化代码。
如果子类调用了某个方法(如tell())或属性,Python会先在子类中找,如果找到了会直接调用。如果找不到才会去父类找。这为方法重写带来了便利。
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法:
class Bases: def __init__(self,name): self.name=name def show(self): print("bases show",self.name)
class Student(Bases): def __init__(self,name,score): Bases.__init__(self,name) self.score=score def say(self): super().show()
def show(self): print("student shwo ",self.name,self.score) |
# def show(): |
# arr=int(input("输入一个整数")) |
#创建类 |
# class Bases: |
语法:
class 类名(父类名1,父类名2,。。。。): |
你可以使用issubclass()或者isinstance()方法来检测。issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,
语法:issubclass(sub,sup) isinstance(obj, Class) 布尔函数如果obj是Class类的实例对象或者是一个Class子类的实例对象则返回true。
原文:https://www.cnblogs.com/yangyujia/p/14546215.html