学Python类的定义及通过类创建对象

一:定义类

定义类语法:class 类名(命名规范:首字母大写,驼峰法):
类的内部结构

二:创建对象

通过 类名 + ‘()’ 方式创建

示例:

class Lei:
     pass

stu = Lei()

三:属性(field):

  1. 实例属性(实例变量):通过类创建出来(定义在 init 里)(由对象自身调用)
    每一个通过该类创建出来的对象都维护自己独有的实例属性,互不影响(每个对象私人订制,专属)
  2. 类属性(类变量):在类里直接创建出来,由类来维护,所有通过该类创建的对象都能访问到(公共资源,大众)
    (由类调用)

示例:

class Student:
   name = '我是类属性'
   def __init__(self):           # __init__必须传一个 self 参数,且该参数永远指向通过该类创建的对象
                                 # init__函数在通过该类创建对象时,自动调用__init__,不需要手动调用
       self.name = '我是实例属性'

四:方法

  1. 实例方法:属于对象自己的方法,由对象自己维护(每个对象的私人订制,专属)
  2. 类方法:属于类的方法,有类来维护(对象的公有财产)
  3. 静态方法:该方法和类与对象没有任何关系,没有任何指针,占据类的命名空间,调用时通过类名 ‘.’方法名调用
    注意:无论变量还是方法,由谁维护,就由谁调用

示例:

class Fangfa:
   def __init__(self):
       print('我是实例方法')
       print(self) # 对象本身,一旦绑定就不会更改

   @classmethod
   def lei(cls):
       print('我是类方法,通过类的修饰器 classmethod声明')
       print(cls) # 类本身,类方法只能访问类属性,不能访问对象属性

   @staticmethod
   def jing(): # 没有参数
       print('我是静态方法,通过类的修饰器 staticmethod声明')
       # 如果某个方法不需要操作类或对象,就可以声明为静态方法
       # 使用场景见下文

静态方法使用场景:假如需要一个类即可以通过传入的时间参数创建对应的对象,也可以通过目前时间创建,就可以通过静态方法
import time  # 引入时间模块

class Date:
   def __init__(self, year, month, day):
       self.year = year
       self.month = month
       self.day = day

   @staticmethod
   def nowDate():
       t = time.localtime() # 创建时间对象
       return Date(t.tm_year, t.tm_mon, t.tm_mday)

date = Date(2017, 10, 27) # 根据传参创建对应对象
print(date.year) # 2017
print(date.month) # 10
print(date.day) # 27

dateNow = Date.nowDate() # 根据当前日期创建对象
print(dateNow.year) # 当前年
print(dateNow.month) # 当前月
print(dateNow.day) # 当前日

五:特性:保护对象属性不被随意修改

原理:通过类的修饰器 @property 声明一个与被保护属性同名函数(该函数由类调用时,与调用属性方法一样)
然后改变该属性名,将该属性访问操作放在特性里(拗口,看代码很简单)

示例

class Texing:
   def __init__(self):
       self._name = '特性'

   @property
   def name(self):
       return self._name # 返回真实该属性值

texing = Texing()
print(texing.name) # 此时访问的name属性其实是类的name方法,值通过name方法返回,
                  # 类似在 _name 属性外加了层保护套
texing.name = '更改值' # 此时这样是不能更改name值,同上理,用户只能访问不能更改

如果需要更改特性值(特性代表的是它保护的属性,如示例中 特性 name 保护的属性时 _name,一下同一)
需要通过设置器(也可以叫拦截器,拦截修改特性的操作,并设定修改值得类型,满足就修改,不满足不让修改)
语法: @特性名.setter
同时也可以删除某个特性值(及对应属性值)
语法:@特性名.deleter,然后通过关键字del删除

示例

class delTexing:
   def __init__(self):
       self._age = 12

   @property
   def age(self):
       return self._age
   @name.setter
   def age(self, value):
       if type(value) is int:
           self._age = value
       else:
           print('修改的值不能是整数外的值')

   @age.deleter
   def age(self):
       del self._age

dT = delTexing()
print(dT.age)  # 12
dT.age = 'ahah'  # 不能更改,因为不是数字类型,打印 ‘修改的值不能是整数外的值’
dT.age = 20
print(dT.age)  # 20 更改成功

del dT.age  #删除age属性

属性私有化:让当前类的私有属性,不能被子类继承到

py中的私有化机制:属性名改写。在所有需要私有化的属性前添加“”,则该属性名会变为:类名_属性名

示例

 class Student:
     def __init__(self):
         self.__name = '张三'

     def __say(self):
         print('hello,我是' + self.__name)

 stu = Student()
 stu._Student__say();
 print(stu._Student__name)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,194评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,058评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,780评论 0 346
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,388评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,430评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,764评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,907评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,679评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,122评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,459评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,605评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,270评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,867评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,734评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,961评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,297评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,472评论 2 348