首页 > 编程语言 >Python入门系列(七)开发常说的“累”与“对象”

Python入门系列(七)开发常说的“累”与“对象”

时间:2022-08-21 18:57:40浏览次数:70  
标签:__ 入门 Python self init def print 常说 name

类与对象

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"])

本文由mdnice多平台发布

标签:__,入门,Python,self,init,def,print,常说,name
From: https://www.cnblogs.com/bugs-in-life/p/16610541.html

相关文章

  • 8/20 python基础
    第七章用户输入和while循环message=input("提示信息")message=input(str)#str可以提前赋值message为字符串,需要数字,要先使用int()转化。第八章函数定义:defp......
  • Python入门系列(五)一篇搞懂python语句
    If语句elif关键字是pythons表示“如果前面的条件不为真,那么试试这个条件”。Theelsekeywordcatchesanythingwhichisn'tcaughtbytheprecedingconditions.a=......
  • MyBatis(一)-入门
    ==>>MyBatis中文网1、第一个mybastis程序1.1导入jar包<mybatis.version>3.4.1</mybatis.version><mysql.version>5.1.47</mysql.version><!--mybatisbegin-->......
  • python print 输出格式化的几种方式
    #对浮点数,保留小数点后几位print('{:0.3f}'.format(50.5/220.5))#print格式化字符串num=int(input('请输入一个十进制的整数:'))#将str转为int类型print(num......
  • 学习python第十周学习总结
    数据存储演变史数据存储的演变其实是对数据的存储格式和数据存储的位置进行演变的过程:1.文本文件基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无......
  • python使用装饰器时带括号与不带括号的区别 | 装饰
    带括号如下代码func_dic={}defmake(name):defdemo(func):func_dic[name]=funcreturndemo@make("1")#这里就相当与@demodefmake1():......
  • python3 使用paho-mqtt
    python版本:python3.8mqtt库:paho-mqtt1.6.1 一,消息发布创建pub.py,写入以下代码importtimefrompaho.mqttimportclientasmqtt_client#broker服务器broker......
  • python-f字符串(f-string)99乘法表三种方式
    #%s打印99乘法表foriinrange(1,10):forjinrange(1,i+1):print("%s*%s=%s"%(j,i,j*i),end="")print("\n")#format打印九九乘法表foriinrange(1,......
  • Spring入门案例-基于XML管理bean
    1.入门案例--hellospring创建MavenModule在pom.xml中引入依赖<dependencies><!--基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar......
  • Python教程 - 画折线图
    matplotlibmatplotlib是Python的绘图库,它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。matplotlib可以用来绘制各种静态,动态,交互式的图表。matplotlib......