Erlo

Python学习问题记录

时间:2019-10-08 23:03   阅读:16次   来源:博客园
页面报错
点赞

 

在学习Python的是后遇到点小问题,记录下来以后忘了再来看看。

一. python2 和python3在继承父类的时候是不同的。super() 是一个特殊的函数,帮助Python将父类和子类关联起来。在Python3中,直接使用如下代码:

Python3

class Father():
def __init__(self,make,kkk,aaa)
~~snip~~
class Son(Father):
super().__init__(make,kkk,aaa)

在Python2中有两种方法:

第一种

class Father():
def __init__(self,make,kkk,aaa)
~~snip~~
class Son(Father):
super(son,self).__init__(make,kkk,aaa)

第二种

class Father():
def __init__(self,make,kkk,aaa)
~~snip~~
class Son(Father):
Father.__init__(self,make,kkk,aaa) # 注意此处参数含self

二. 在运行过程中还遇到了一个问题。

遇到如下的报错,上网查询发现是调用对象函数的时候没有加 () .

<bound method ElectricCar.get_descriptive_name of <__main__.ElectricCar object at 0x0000000003200A90>>

如下:

 

#encoding=utf-8

class Car(object):

    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) + " miles o it.")

    def update_odometer(self,mileage):

        """将里程表读数设置成指定的值"""

        self.odometer_reading = mileage 

class ElectricCar(Car): #继承Car的类

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

        """初始化父类的属性"""

        super(ElectricCar,self).__init__(make,model,year)


my_tesla = ElectricCar('tesla','model s','2016')

print(my_tesla.get_descriptive_name)

加了括号后就运行正常了。

在最后一行:print(my_tesla.get_descriptive_name)改为

print(my_tesla.get_descriptive_name())   就解决问题了。

 

 

评论留言

还没有评论留言,赶紧来抢楼吧~~

Erlo大厅()

* 这里是“吐槽厅”,所有人可看,只保留当天信息。

  • Erlo.vip2019-10-24 02:07:18Hello、欢迎使用吐槽厅,这里是个吐槽的地方。
  • 返回顶部