b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

python 变量命名规范#是注释。通过空格进行缩进,当一行(10)

电脑杂谈  发布时间:2018-02-10 22:04:08  来源:网络整理

类(Class)是抽象的模板,而实例(Instance)是根据类创建出来的一个个具体的"对象",每个对象拥有相同的方法,而各自的数据不同。

# class关键字定义类,后面object表示Student是从object继承的,
class Student(object):
    
    # 通过定义特殊的__init__方法,在创建类时,将必须绑定的属性强制填写进去
    # __init__第一个参数是self,表示实例本身,在内部将name和score属性绑定到self上
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def print(self):
        print("%s %s" % (self.name, self.score))

# 创建Student实例,必须传入与__init__方法匹配的参数
std = Student("name", 90)   
# Student实例将name和score数据封装起来,通过调用实例的方法,操作对象的内部数据
std.print()     

上例中,仍可以通过std.name来访问和修改实例的name属性。如果要将name和score内部属性设置为私有变量(private),可以在属性的名称前加两个下划线__,只有内部可以访问,外部不可以访问。如下:

变量名类似__xxx__,前后都有两个下划线的是特殊变量,特殊变量可以直接访问,不是private的。

定义一个新的class可以继承已有的class,从而获得父类的全部功能。例如:

class Animal(object):
    def run(self):
        print('animal run')

# Cat类继承自Animal类
class Cat(Animal):
    # 将父类中的run方法覆写掉
    def run(self):
        print('cat run')

Cat类也可以覆写run方法,从而代码调用时,会调用子类的run方法。这样,我们会获得了多态。

# 该函数接受Animal类型的变量
>>> def run_twice(animal):
...     animal.run()
...     animal.run()
...
>>> run_twice(Animal())     # 当传入Animal对象时
animal run
animal run
>>> run_twice(Cat())        # 当传入Cat对象时
cat run
cat run

对于传入的不同的Animal子类,run_twice()函数不需要做任何修改,只需要接受Animal类型就可以了。因为Cat等子类也算是Animal类型,然后可以按照Animal的类型进行操作,可以放心的调用run()方法,而具体的run()方法是作用在Animal、Cat对象上,由运行时该对象的确切类型决定。这就是多态的好处:

对扩展开放:允许新增Animal的子类

对修改封闭:不需要修改依赖Animal类型的run_twice()函数

静态语言 vs 动态语言:

对于静态语言(例如Java):如果需要传入Animal类型,则传入的对象必须是Animal类型或它的子类,否则将无法调用run()


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-70754-10.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...