python关于类的一些知识

之前很少写过面向对象编程,所以很多概念当时学的时候了解,但是不久就忘了。现在自己重新整理一下比较重要的概念。

1,__init__这是python里面比较特殊的方法,在定义类后,如果加上了__init__方法那么在创建实例的时候需要把__init__需要的属性跟着传进来。

class Student(object):

    def __init__(self, name, score):
        self.name = name
        self.score = score

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

__init__方法的第一个变量永远是self。有了这个方法后再创建实例就不能传空的参数了,需要把init需要的参数跟着传进来。

2,__双下划线,在上面定义的变量在生成实例后可以更改,如果不想让他们被外部访问的话,可以在属性名称前面加上__,这样就变成了私有变量。外部不能访问更改了。

class Student(object):

    def __init__(self, name, score):
        self.__name = name
        self.__score = score

    def print_score(self):
        print('%s: %s' % (self.__name, self.__score))
>>> bart = Student('Bart Simpson', 59)
>>> bart.__name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Student' object has no attribute '__name'

 3,_单下划线,在属性前面加上_后就会阻止其他python脚本通过【from module import *】语句导入该名字,即该名字不会被星号匹配。

 4,类的继承,继承的好处就是子类拥有了父类的全部功能,还可以在子类下面增加新的方法。

class Animal(object):
    def run(self):
        print('Animal is running...')
class Dog(Animal):

    def run(self):
        print('Dog is running...')

    def eat(self):
        print('Eating meat...')

 在子类与父类都有同一个方法时会调用子类的方法。

class Dog(Animal):

    def run(self):
        print('Dog is running...')

class Cat(Animal):

    def run(self):
        print('Cat is running...')

这里在Dog类中调用run方法时会显示 Dog is running...而不是Animal is running...。

在我们定义一个class的时候,我们实际上是定义了一种数据类型。这个定义的数据类型和list,str等数据类型没有区别。它可以作为一个变量传入函数中。且该函数可以使用对象中的方法。

def run_twice(animal):
    animal.run()
    animal.run()
>>> run_twice(Animal())
Animal is running...
Animal is running...

5,__call__,也是python中类的内置方法。具体用法是在直接调用类的时候会把参数传到__call__方法里面去,并且执行这个方法。例如下 

 class Person:

    def __call__(self , name):

        print('__call__'+'Hello'+name)

   

    def hello(self , name):

        print('hello'+ name)


 

person = Person()

person('zhangsan')

person.hello('list')

它的输出为

__call__Hellozhangsan

hellolist

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的继承是面向对象编程中的一种重要机制,它允许我们定义一个新,它继承了旧的所有属性和方法,并且可以在此基础上进行扩展和修改。下面是一些Python中类继承的知识点: 1. 语法:定义一个继承自另一个的新时,需要在新名称后面加上父名称,并用圆括号括起来,如下所示: ```python class ChildClass(ParentClass): # 子的属性和方法定义 ``` 2. 继承的型:Python支持单继承和多继承。单继承指子只继承一个父,而多继承则允许子继承多个父。 3. 调用父方法:在子中我们可以通过super()函数来调用父的方法,这样可以避免重复代码,同时也保证了子能够正确地继承父的行为。 4. 方法重写:子可以重写父的方法,以实现自己的行为。当子定义了与父同名的方法时,它将覆盖父的方法。 5. 方法重载:Python不支持方法重载,即不能定义多个同名方法,只能通过默认参数或可变参数来实现似的效果。 6. 多态:Python中的多态是基于继承和方法重写实现的。如果一个子重写了父的方法,那么在调用该方法时,如果对象是子的实例,那么将调用子的方法,否则将调用父的方法。 7. 抽象Python中没有抽象的概念,但是可以通过abc模块来实现似的功能。抽象是一个不能被实例化的,它定义了一些方法,但是这些方法的实现是由其子来完成的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值