Python类的定义

十秒耿直拆包选手 2019-04-14 02:16:43
在《Python从编程到入门》书中有这个例子:
class Car():
"""一次模拟汽车的简单尝试"""

def __init__(self, make, model, year):
"""
初始化描述汽车的属性
:param make: 汽车品牌
:param model: 汽车型号
:param year: 生产年份
"""
self.make = make
self.model = model
self.year = year


def get_descriptive_name(self):
"""返回整洁的描述性信息"""
long_name = str(self.year) + ' ' + self.make + ' ' + self.model

return long_name.title()


my_new_car = Car('audi', 'A4', 2016)
print(my_new_car.get_descriptive_name())


Car中通过self定义了make,model,year,这三个变量是自己在__init()__方法中定义的。在python中不能像java/c++中,定义类变量,然后在构造函数中进行赋值?
...全文
296 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈年椰子 2019-04-15
  • 打赏
  • 举报
回复

class Car():
    """一次模拟汽车的简单尝试"""
    v_name = 'My Car'
     
    def __init__(self, make, model, year):

这个v_name 就是类变量。
Belove黎 2019-04-15
  • 打赏
  • 举报
回复
你可以直接在init方法里赋值 让它成为一个默认值参数
一笑程序猴 2019-04-15
  • 打赏
  • 举报
回复
v_name是类变量即可以用类直接调用也可以用类的对象调用
而make,model,year是实例变量只有类实例化以后才可调用类的对象去调用
陈年椰子 2019-04-15
  • 打赏
  • 举报
回复
self.make self.model self.year 这些是实例变量, 只有生成实例后(实例生成时调用 __init__), 这3个变量才生成。 之前有个帖子问了类变量和实例变量在继承有啥影响这个问题。 https://bbs.csdn.net/topics/392565942
  • 打赏
  • 举报
回复
引用 3 楼 陈年椰子 的回复:

class Car():
"""一次模拟汽车的简单尝试"""
v_name = 'My Car'

def __init__(self, make, model, year):



这个v_name 就是类变量。

谢谢,v_name是个类变量,纳闷我在类方法中是否可以写v_name调用或写成self.v_name来调用?
还有就是我的例子中写的
“self.make = make
self.model = model
self.year = year”make、model、year也是类变量?只不过这3个类变量是在init方法中创建的?
流泪熊猫头 2019-04-14
  • 打赏
  • 举报
回复
__init__方法是在类实例化中首先调用的,一般用来属性的初始化操作。你当然可以在__init__方法外定义变量,在方法内赋值,但这样做就多此一举了,因为python中的变量在定义的时候就得赋值,这样做的话你要进行两次赋值操作。毕竟python不是一门强类型语言,在定义变量的时候赋值才能确定类型。

37,722

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧