Python 创建和使用类

python创建和使用类的方法如下

# class Dog():
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age
#
#     def sit(self):
#         print(self.name.title()+"is now sitting")
#
#     def roll_over(self):
#         print(self.name.title()+" rolled over!")
#
# my_dog=Dog("willie",6)
# #print("My dog‘s name is "+my_dog.name.title()+".")
# #print("My dog is "+str(my_dog.age)+"years old.")
# my_dog.sit()
# my_dog.roll_over()

1、方法__init__() 是一个特殊的方法,包含三个形参:self 、name 和age 。在这个方法的定义中,形参self 必不可少,还必须位于其他形参的前面。因为Python调用这个__init__() 方法来创建Dog 实例时,将自动传入实参self 。每个与类相关联的方法调用都自动传递实参self ,它是一个指向实例本身 的引用,让实例能够访问类中的属性和方法。我的理解self这个形参是必不可少的,因为在类中定义方法的时候一定会有self这个形参。然后看下面这段代码

# class Dog():
#     def __init__(self,name,age):
#         self.name=name
#         self.age=age

我理解是name和age都是类Dog中的属性,这是对类中的属性进行初始化,因为类中的每个属性必须有初始值。同时记住以self 为前缀的变量都可供类中的所有方法使用,上面代码中的函数定义,函数只有一个self参数,但是函数体中可以使用 age,name这些属性。

在根据类创建实例的时候,比如

 my_dog = Dog(‘willie‘, 6) 

此时的self这个参数会默认自动传递,因此我们要传递的只是后面的两个参数。实例化结束后,我们可以通过Dog的实例来使用类中定义的函数或者直接访问类中有的属性。

__init__方法是对类的属性进行初始化,因此在该方法中要传递属性的初始值作为参数,当然你也可以直接对某个属性直接进行初始化,这样的话就不用在
__init__方法中提供这个属性的形参了;
class Car():
    def __init__(self,make,model,year):
        self.make=make
        self.model=model
        self.year=year
        self.odometer_reading=0
    def get_descriptive_name(self):
        long_name = str(self.year) + ‘ ‘ + self.make + ‘ ‘ + self.model
        return long_name.title()
    def read_odometer(self):
        print("This car has "+str(self.odometer_reading)+" niles on it.")

这里的self.odometer_reading=0直接初始化为0,因此不必在 _init_方法中为该属性提供形参作为默认的初始值。

还有,如果每次需要改变属性的值时都要在实例化时作更改,岂不是很麻烦?

所有有以下几种方式修改属性值。

1. 直接修改属性的值比如上面的odometer_reading = 0,可以这样修改  my_new_car.odometer_reading = 23

2.通过方法来修改

 def update_odometer(self, mileage):
       """将里程表读数设置为指定的值"""
       self.odometer_reading = mileage     

在类中定义一个方法专门来修修改属性的,如果需要更变属性的时候,直接调用该方法即可。

不过那些属性初始值是在_init_方法中的参数的,并不能通过以上的方式来修改(只能在初始化实例的时候传参修改?)

能操作的只是那些个没在在类的 _init_函数参数中有初始值的属性。也就是上面的  self.odometer_reading=0  这个属性是能被修改的,其他的 model,make,year 这这些属性只能在实例化类的时候在参数中修改

应该只 这样子的

 

原文地址:https://www.cnblogs.com/Guhongying/p/10011185.html

时间: 2024-10-16 12:24:53

Python 创建和使用类的相关文章

Python——一个简单的类的创建和应用

1.创建类,设置属性和给属性设定默认值,设置方法并访问类的属性: 2.利用类创建多个实例,以及调用类的方法的两种办法: 3.设置更新属性的函数,并更新实例的属性. 1 class dog(object): 2 """创建小狗类""" 3 4 def __init__(self, name, age): 5 """初始化参数,Python创建实例时,自动传入实参self,指向实例本身,以便访问属性和方法"&q

深刻理解Python中的元类(metaclass)

译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也高达6

python学习笔记1-元类__metaclass__

type 其实就是元类,type 是python 背后创建所有对象的元类 python 中的类的创建规则: 假设创建Foo 这个类 class Foo(Bar): def __init__(): pass Foo中有__metaclass__这个属性吗?如果有,Python会在内存中通过__metaclass__创建一个名字为Foo的类对象,他是一个类,但是本身类就是对象,一个python文件模块也属于一个对象. 如果Python没有找到__metaclass__,它会继续在Bar(父类)中寻找

Python创建list和按照索引访问list

Python创建list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一个list表示:>>> ['Michael', 'Bob', 'Tracy']['Michael', 'Bob', 'Tracy']list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的. 构造list非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都括起来,就是一个list对象.通常,

Kivy A to Z -- 如何从Python创建一个基于Binder的Service及如何从Java访问Python创建的Service

<Kivy A to Z -- 如何从python代码中直接访问Android的Service> 一文中讲到了如何从python访问java的service,这一篇再来讲下如何创建一个基于Binder的Python Service以及如何从Java代码中访问这个Python创建的Service. 先来看代码,再作下解释: 接<Kivy A to Z -- 如何从python代码中直接访问Android的Service>一文,我们在相关的文件中增加代码: binder_wrap.cp

Python中的元类(metaclass)

推荐+收藏:深刻理解Python中的元类(metaclass) 做一些笔记学习学习: 在大多数编程语言中,类就是用来描述如何生成一个对象的代码段,在Python中类也是一个对象,这个(类)对象自身拥有创建对象(类实例)的能力. 因为它的本质是一个对象: 可以将它赋值给一个变量 可以拷贝它 增加属性 作为参数进行传递 可以在运行时动态地创建他们,可以在函数中创建类,只需要使用class关键字即可 当使用class关键字的时候,Python解释器会自动地创建这个对象,Python还提供了手动处理的方

深刻理解Python中的元类metaclass(转)

本文由 伯乐在线 - bigship 翻译 英文出处:stackoverflow 译文:http://blog.jobbole.com/21351/ 译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了9

深入理解Java对象的创建过程:类的初始化与实例化

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 深入理解Java对象的创建过程:类的初始化与实例化 - Rico's Blogs - 博客频道 - CSDN.NET Rico's Blogs 潜心修炼,成为一个更好的人. 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅

python 创建Web Server

1. Web 服务应用工作机制 监听80或者是443端口 80为普通的http协议,443为https. 等待客户端请求 GET.POST.HEAD- - 处理请求 保存文件 执行CGI脚本 2. 创建一个简单的Web服务 使用SimpleHTTPServer类 实现do_GET()方法 可以当做刺透客户端的服务端渗透代码 可以做渗透测试的客户端代码 从终端进入python编辑模式,输入以下代码: >>> >>> import SocketServer >>