Python入门系列(七)开发常说的“累”与“对象”
类与对象
Python是一种面向对象的编程语言。
要创建类,请使用关键字class
class MyClass:
x = 5
创建一个名为p1的对象,并打印x的值
p1 = MyClass()
print(p1.x)
所有类都有一个名为__init_()的函数,该函数总是在初始化类时执行。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("John", 36)
print(p1.name)
print(p1.age)
对象也可以包含方法。对象中的方法是属于对象的函数。
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def myfunc(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.myfunc()
self参数是对类的当前实例的引用,用于访问属于该类的变量。
它不必命名为self,您可以随意调用它,但它必须是类中任何函数的第一个参数:
# Use the words mysillyobject and abc instead of self
class Person:
def __init__(mysillyobject, name, age):
mysillyobject.name = name
mysillyobject.age = age
def myfunc(abc):
print("Hello my name is " + abc.name)
p1 = Person("John", 36)
p1.myfunc()
您可以修改以下对象的属性
p1.age = 40
可以使用del关键字删除对象上的属性
del p1.age
可以使用del关键字删除对象
del p1
Python继承
创建父类
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
#Use the Person class to create an object, and then execute the printname method:
x = Person("John", "Doe")
x.printname()
创建子类
class Student(Person):
pass
使用Student类创建对象,然后执行printname方法
x = Student("Mike", "Olsen")
x.printname()
添加__init_()函数时,子类将不再继承父类的_ init_()函数。
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
要保留父函数的__init_()函数的继承,请添加对父函数的调用
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
Python还有一个super()函数,它将使子类继承其父类的所有方法和属性
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
通过使用super()函数,您不必使用父元素的名称,它将自动从其父元素继承方法和属性。
添加属性
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname, self.lastname)
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear = year
x = Student("Mike", "Olsen", 2019)
print(x.graduationyear)
添加方法
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear = year
def welcome(self):
print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
Python迭代器
列表、元组、字典和集合都是可迭代对象。它们是可迭代的容器,您可以从中获取迭代器。
mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)
print(next(myit))
print(next(myit))
print(next(myit))
创建迭代器
__iter__()方法的作用类似,您可以执行操作(初始化等),但必须始终返回迭代器对象本身。
__next_()方法还允许您执行操作,并且必须返回序列中的下一项。
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
为了防止迭代永远持续下去,我们可以使用StopIteration语句。
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
作用域
如以上示例所述,变量x在函数外部不可用,但在函数内部的任何函数中都可用
def myfunc():
x = 300
def myinnerfunc():
print(x)
myinnerfunc()
myfunc()
如果需要创建全局变量,但仍停留在局部范围内,则可以使用global关键字。
Python模块
要创建模块,只需将所需代码保存在文件扩展名为.py的文件中
# Save this code in a file named mymodule.py
def greeting(name):
print("Hello, " + name)
现在,我们可以使用刚才创建的模块,方法是使用import语句
import mymodule
mymodule.greeting("Jonathan")
模块中的变量
# Save this code in the file mymodule.py
person1 = {
"name": "John",
"age": 36,
"country": "Norway"
}
import mymodule
a = mymodule.person1["age"]
print(a)
导入模块时,可以使用as关键字创建别名
import mymodule as mx
a = mx.person1["age"]
print(a)
有一个dir()函数来列出模块中的所有函数名(或变量名)
import platform
x = dir(platform)
print(x)
通过使用from关键字,您可以选择仅从模块导入零件。
def greeting(name):
print("Hello, " + name)
person1 = {
"name": "John",
"age": 36,
"country": "Norway"
}
from mymodule import person1
print (person1["age"])
您的关注,是我的无限动力!
公众号 @生活处处有BUG
Python入门系列(七)开发常说的“累”与“对象”的更多相关文章
- Python 入门之 软件开发规范
Python 入门之 软件开发规范 1.软件开发规范 -- 分文件 (1)为什么使用软件开发规范: 当几百行--大几万行代码存在于一个py文件中时存在的问题: 不便于管理 修改 可读性差 加载速度慢 ...
- Python基础教程系列目录,最全的Python入门系列教程!
Python是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 在现在的工作及开发当中,Python的使用越来越广泛,为了方便大家的学习,Linux大学 特推出了 <Python基 ...
- Python入门系列【附】进阶教程
如题,本篇将讲解Python提升之路:Python作为语法简单易学的语言,入门容易精通却很难,这是共识,那么为什么会有这样的共识?精通Python的难度在哪里? Python拥有简单.形象.直观的语法 ...
- 【JAVA零基础入门系列】Day11 Java中的类和对象
今天要说的是Java中两个非常重要的概念--类和对象. 什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外观特征上,有名字,有年龄,能说话,能吃饭等等,这是我们作为人类的相同特征 ...
- 扩展Python模块系列(一)----开发环境配置
本系列将介绍如何用C/C++扩展Python模块,使用C语言编写Python模块,添加到Python中作为一个built-in模块.Python与C之间的交互目前有几种方案: 1. 原生的Python ...
- Python入门系列(一)安装环境
python是什么 python是一门很受欢迎的语言,除了不能生孩子以外,其它都可以做. 它擅长的领域是脚本工具和科学数据这一块,比如大数据,数据分析什么的. python安装 为了演示和验证教程可用 ...
- Python入门之软件开发目录规范
本章重点: 理解在开发人标准软件时,如何布局项目目录结构,以及注意开发规范的重要性. 一.为什么要有好的目录结构 二.目录组织的方式 三.关于README的内容 四.关于requirements.tx ...
- Python入门系列(九)pip、try except、用户输入、字符串格式
pip 包含模块所需的所有文件. 检查是否安装了PIP $ pip --version 安装包 $ pip install package_name 使用包 import package_name 删 ...
- python入门(七):字符串
1.字符串类型: >>> s="早上好" #str类型的字符串 >>> type(s) <class 'str ...
随机推荐
- generatorConfig.xml自动生成实体类,dao和xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration ...
- Tensor的向量化
向量化操作是指可以在同一时间进行批量地并行计算,例如矩阵运算,以达到更好效率的一种方式. 尽量使用向量化直接对Tensor操作,避免低效率的for循环对元素逐个操作.
- 关于webstorm更换主题
现在我们前端使用编辑器,只要用习惯就好,不过这里推荐使用webstorm,因为被称为,'js神器'的称号,不是白说的.接下来我们来看下怎么引入主题. 下面有一个网站,这个网站的名字叫 http://w ...
- SAP FPM 相关包 APB_FPM_CORE
related interface: APB_FPM_COREAPB_FPM_CORE_4_EXT_SCAPB_FPM_CORE_INTERNALAPB_FPM_CORE_RESTRICTED
- java获取本地json格式的内容
前言 该功能模块基于springBoot,自己在开发中遇到相关功能开发,总结如写: 1.首先将所需要获取的json文件放在项目resource目录下: 2.所需要的pom依赖: <depende ...
- (一)Linux环境的学习环境的搭建
我们使用VMWARE来安装Debian11系统来进行我们的LINUX学习 Debian虚拟机的安装 vmware-tools的安装 xShell的安装使用 samba的配置 gcc环境的配置 Debi ...
- java版第一个代码——HelloWorld!
java版第一个代码--HelloWorld! 今天来接触一下java代码: 事前准备 jdk的配置(推荐jdk8或jdk11) notepad++或idea软件 开始编写 建立文件夹存放代码 建立j ...
- 如何在.Net Framework应用中请求HTTP2站点
背景介绍 本文的需求背景是对接苹果公司的推送服务(APNS),苹果在安全方面比较积极,已经严格限制API只支持HTTP2.但是我这里的应用目前仍然是.NET Framework平台,所以必须寻找一种解 ...
- 迭代阈值收缩算法ISTA,背后的思想与具体推到过程
- idea 分 环境 配置 线上 测试 本地
在resources 新建application.properties 分开在resources 新建的多个环境的文件 #测试环境 applicaion-test.properties #开发环境 a ...