zoukankan      html  css  js  c++  java
  • Python进阶-----类、对象的相关知识

    一、声明类

    class 类名: #一般类名的首字母大写
    '类的文档字符串'
    类体

      例如创建一个中国人的类:
    1 class Chinese:
    2     '这是一个中国人的类'  #类的文档字符串
    3     name = '中国人'
    4     def eat():
    5         print('爱吃水果')

       用类Chinese实例化处一个对象p1

    print(Chinese.name)
    p1 = Chinese()          #类名()表示实例化(相当于函数的return),并赋给p1,p1就是一个对象
    二、属性

    1、数据属性:就是变量
    2、函数属性:就是函数,在面向对象里称为方法
    3、类和对象均用点来来访问自己的属性
    4、查看类的属性
    a. dir(Chinese) #类的列表属性
    即可查看CHinese类的所有属性包括数据、函数属性,返回一个列表

    b. Chinese.__dict__ #类的字典属性
    即可查看CHinese类的所有属性包括数据、函数属性,返回一个字典
    可以通过返回的字典查看类的属性

    Chinese.name #'中国人'
    Chinese.__dict__['name'] #中国人,上述的.name其实是调用__dict__获取的

    也可以用__dict__调用函数属性(调用函数)】
    Chinese.__dict__['eat']() #等同--->Chinese.eat() ---> '爱吃水果'

    5、类内置的特殊属性
    类名.__name__ # 类的名字(字符串)
    类名.__doc__ # 类的文档字符串
    类名.__base__ # 类的第一个父类(在讲继承时会讲)
    类名.__bases__ # 类所有父类构成的元组(在讲继承时会讲)
    类名.__dict__ # 类的字典属性
    类名.__module__ # 类定义所在的模块
    类名.__class__ # 实例对应的类(仅新式类中)
    三、实例化(对象)

    实例只有数据属性(实例的函数属性其实是累的函数属性),同函数的作用域样,实例可以访问类的属性,逐层向外
    (上一级)寻找

    1 __init__() #实例数据属性
    该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但一定不能有返回值默认return NOne
     1 class People:
     2     def __init__(self,name,age,sex): #self=obj1,x='egon',y=18,z='male'
     3         self.name = name              #obj1.name = 'egon'其实内部就是这样进行
     4         self.age = age
     5         self.sex = sex
     6     def run(self):
     7         print('哈哈哈')
     8 
     9 obj1 = People('egon',18,'male')        #---->等同于 obj1 = People.__init__(obj1,'egon',18,'male')
    10 print(obj1.__dict__)                 #{'name': 'egon', 'age': 18, 'sex': 'male'}自动将初始化数据属性存放成字典形式
    11 obj1.run()                            #若在类的内部定义的函数不写self参数,则python会将obj1默认传入--> obj1.run(obj1)
    12                                     #则报错
    13 
    14 #self即为实例化的对象自身,在上例中即为obj1。同函数作用域一样,实例可以访问类属性
    15 #注意:!!!!!
    16 # 实例调用类的方法不需要传入self对象,类会自动帮你传入
    17 # 但是类调用自己的函数属性时,不会自动传入self对象,需要自己手动传入的实例对象
     
  • 相关阅读:
    try? try! try do catch try 使用详解
    Swift Write to file 到电脑桌面
    NSLayoutConstraint 使用详解 VFL使用介绍
    automaticallyAdjustsScrollViewInsets 详解
    Swift 给UITableView 写extension 时 报错 does not conform to protocol 'UITableViewDataSource'
    OC Swift中检查代码行数
    Swift中 @objc 使用介绍
    SWift中 '?' must be followed by a call, member lookup, or subscript 错误解决方案
    Swift 中 insetBy(dx: CGFloat, dy: CGFloat) -> CGRect 用法详解
    求1000之内所有“完数”(注:C程序设计(第四版) 谭浩强/著 P141-9)
  • 原文地址:https://www.cnblogs.com/Meanwey/p/9788649.html
Copyright © 2011-2022 走看看