类的对象属性和init方法

class 类名:
    属性
    方法
实例一:init方法会自动被调用
class Person:

  • _ _ init_ _方法又叫构造方法。是在通过类创建对象的时候,自动调用的方法。
  • _ _ init_ _方法的作用就是在创建对象的时候初始化对象的属性
  • _ _ init_ 方法:对象的属性就是声明在这个方法中
    def _ _ init
    _(self):
    在这个地方声明对象的属性
    声明对象的时候会自动调用init方法
    p1 = Person
    p2 = Person

实例二:带参的init方法

class Dog:
       """狗"""
       def _ _ init_ _(self,name=""):
print('名字是:%s'%(name))

  • 通过类创建对象的时候,要保证init方法里面的每一个参数都有值。通过给类名后面的括号里传参来保证
    dog1 = Dog ('才才')
    dog2 = Dog(name = '旺财‘)
    实例三:对象属性
    属性:声明在类中的变量
    对象属性:要通过对象去使用;不同的对象可能会有不同的值,声明在init方法中的变量

    class Person2:
          """人类"""
          #在init方法中声明对象属性:self.属性名 = 初值
          def _ _init_ _(self):
                    self.name = '无名氏'
                    #声明了一个对象属性,初始值为空串
                    self.age = 10
    

通过Person2类创建对象p1
p1 = Person2()
通过p1对象去修改p1的name属性
p1.name = '张三'
实例四:创建对象的时候赋初值

class Student2:
    def _ _init _ _(self,name1=' ' , age1 = 0, tel = ' '):
    self.name = name1
    self.age = age1
    self .tel = tel1
stu2 = Student2('小明',18 , '112')

self

类中的对象方法都有一个默认参数self:

  1. 调用带有默认参数self的方法,不需要给self传参。系统会自动将调用当前方法的对象传给self

  2. 在方法中使用self就相当于使用调用方法的对象(只能使用self,不能重新给self赋值)

     class Person:
             """人"""
             def _ _init_ _(self, name='', age=0):
             # 声明对象属性
             self.name = name
             self.age = age
             def eat(self):
                    print('吃饭')
             def run(self):
                    print('self',self)
                    print('%s跑起来'%(self.name)
                    self.eat()
    

创建一个Person对象

练习:声明一个圆类, 拥有属性:半径 拥有方法: 计算圆的面积、计算圆的周长
from math import pi
class Circle:
""" 圆"""
def _ _init_ _(self,radius=0);
  self.radiius = radius
def area():
 return pi*self.radius**2
def girth():
  return 2*pi*self.radius
c1 = Circle(10)
print('%.2f'%c1.area())
属性的增删改查
class Dog:
"""狗🐶"""
# Dog类有name和age两个属性
def __init__(self, name='', age=0):
    self.name = name
    self.age = age
dog1 = Dog('才才')

1.查
方式1: 对象.属性
特点:如果属性存在就获取属性的值。如果属性不存在就会报AttributeError错误
方式2:getattr(对象, 属性名, 默认值)
--> 获取指定对象的指定属性
如果不设置默认值: 属性如果存在就获取属性的值;不存在就报错
如果设置默认值:属性如果存在就获取属性的值;属性不存在的时候,不报错,并将默认值作为结果
方式3:对象.getattribute(属性名)
获取指定对象的指定属性。如果属性不存在就会报错

print(dog1.name)
print(getattr(dog1,'name,None)
print(dog1._ getattribute _('name')

2.改
方式1: 对象.存在的属性 = 新值
方式2:setattr(对象, 属性名, 新值)
方式3:对象.setattr(属性名, 新值)

dog1.name = '大黄'
print(dog1.name)
setattr(dog1,'name','小黄')
dog1._ setattr _('name','小黑')

3.增(对象添加属性)
方式1:对象.不存在的属性 = 值
方式2:setattr(对象, 不存在的属性名, 新值)
方式3:对象._ setattr _(不存在的属性名, 新值)
dog1.sex = '男'
print(dog1.sex)

setattr(dog1, 'score', 100)
print(dog1.score)
4.删除属性
方式1:del 对象.属性
方式2:delattr(对象, 属性名)
方式3:对象.delattr(属性名)

del dog1.age
delattr(dog1, 'age')
dog1._ delattr _('age')

5.判断对象是否拥有某个属性
方式:hasattr(对象, 属性名) ---> 判断指定的对象是否拥有指定的属性
result = hasattr(dog1 ,'name')
print(result)
注意:1.对对象属性的增、删、改、查是针对指定的那个一个对象。不会影响其他的对象
2.实际开发用的时候,一般只用获取对象属性的值和修改对象属性的值。想要添加和删除属性,一般都是在init方法中去操作

  • 通过给 _ slots 赋值,可以限制类中对象的属性有哪些,防止一个不必要的属性被添加
    slots = ('name', 'age', 'color')
    注意:
    slots _中规定的属性,只能少不能多。删除属性是不受影响的

内置类属性

  • 内置的类属性是属于类的,需要通过类去使用
    1.类._ name _ : 获取类的名字(只有类有这个属性)
    2.类._ doc _ : 获取类的说明文档
    3._ dict _
    类._ dict _ : 获取类中所有的类属性(类字段)和对应的值的键值对 --> 结果是字典
    对象._ dict _ : 以键值对的形式获取指定对象的所有的属性和值
    类._ module _ : 获取类所在的模块的名字
    类._ bases _ : 获取指定类的基类
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容