python笔记 | python中的类

1.     类的定义

>>>class theClass:

...     """a simple exampleclass"""

...     a = 123

...     b = 1.23

...     def f(self):

...             return 'aasdfasdf'

类的定义如下所示,在类中成员变量默认为公有类型,成员函数的第一个参数一定要是self,在类里面的方法中访问类的成员变量使用self.a,self.b类似这样的方法访问

2.     __init__方法

类的初始化如下所示:

X = theClass()

可以把类的实例化看成是一个函数来使用

在一般情况下类初始化之后都是一个空的实例,但是在很多情况下需要将类初始化为有值的状态,因此需要__init__函数,

比如

def __init__(self, c, d):

      self.a= c

      self.b= d

x = theClass(1, 1.1)

3.     继承

在python中,当一个类继承了另一个类的时候,它将继承父类所有的功能,成员变量,和方法,这有助于代码的重用

#!/usr/bin/envpython3

classPerson(object):

       """asdasdl"""

        ppp = 234

        def __init__(self, name):

                self.name = name

        def get_details(self):

                return self.name

classStudent(Person):

       """asdasd"""

        def __init__(self, name, branch, year):

                Person.__init__(self,name)

                self.branch = branch

                self.year = year

        def get_details(self):

                """asasf"""

                return "{} {}{}".format(self.name, self.branch, self.year)

person1 =Person('sachin')

student1 =Student('GG', 'cse', 2005)

print(student1.ppp)

print(person1.get_details())

print(student1.get_details())

在这个例子中需要注意以下几点,首先父类会继承子类的全部的变量和方法,可以通过父类的对象直接访问,

然后就是在父类中可以调用子类的构造函数,这个构造函数会被当成普通的函数进行调用,可以使用子类的构造函数创建父类的成员变量,也可以使用父类自己的函数来进行成员变量的创建

在python中的类中,成员变量可以直接在函数里面赋值,假如没有这个成员变量会为这个类创建成员变量

运行结果:

234

sachin

GG cse 2005

4.     有关多继承

#!/usr/bin/envpython3

class a(object):

        a1 = 1

        def a2(self):

                return 'ggfu'

class b(object):

        a1 = 4

        def b2(self):

                return 'ggfugg2'

class c(a, b):

        c1 = 4

        def c2(self):

                self.a1 = 11

                b.a1 = 123123

                print(a.a2(self))

                return 'gggugg3'

ppp = c()

print(ppp.c2())

print(ppp.a1)

print(ppp.a2())

当使用父类的对象访问子类的成员变量和方法的时候,直接加.访问即可,但是假如在成员函数里面访问成员方法和变量,需要在前面加上self.,假如访问的是子类的成员变量和方法需要加上 子类名.,当子类和父类有同名变量或者是方法的时候,使用类的对象访问的时候优先访问子类的,当多个父类有同名变量和方法的时候,使用类的对象访问的时候优先访问第一个父类的方法和变量

以上程序输出为

123123

ggfu

gggugg3

11

Ggfu

5.     删除类的对象

可以使用del删除任何类的对象,在python中,任何变量类型都可以视为一个类的对象

>>>class theClass:

...     theNum = 123

...

>>> ppp= theClass()

>>> ppp

<__main__.theClassobject at 0x7ffff686d3c8>

>>> delppp

>>> ppp

Traceback (mostrecent call last):

  File "<stdin>", line 1, in<module>

NameError: name'ppp' is not defined

>>> 

Del实际上的功能是使对象的引用计数减一,当对象的引用计数为0的时候,垃圾回收器会删除这个对象

6.     类的装饰器

类可以通过@property和@函数名.setter两个装饰器来实现类的成员访问更详细的控制

加上@property装饰器的函数会变为属性,函数只有一个self参数,函数的返回值为属性的调用值,可以在函数里面写上我们需要的内容

加上@函数名.setter的函数会变为当给这个函数名属性赋值的时候会发生什么,

当只定义了@property,这个函数名会变为只读属性

猜你喜欢

转载自blog.csdn.net/u012737193/article/details/80328108