Python基础知识——对象、私有属性、继承、类和静态方法

编程语言有机器语言、汇编语言、高级语言,我们现在学习的是高级语言。高级语言分为面向过程的语言,注重方法实现的过程,比如C;面向对象的语言,比如Java,OC,C++,C#,python。面向对象编程的三个特点:1.封装 2.继承  3.多态

一、对象

    类和对象,分别为群体和个体,且个体是从群体里面分离出来的,并且具有群体的某些特征。对象有两部分,属性和方法。类相当于模板,对象相当于用模板生成的产品。

class People(object):
    name = ''
    sex = ''
    age = ''
    height = ''
    weight = ''
    def eat(self):
        print('吃遍天下美食')
    def sleep(self):
        print('提高睡眠质量')
    def work(self):
        print('劳动使人快乐')

p = People()
list = list()
dic = dict()
p.name = '小王'
p.age = 17
p.sex = False
p.height = 176
p.weight = '69kg'

print(p.sex)
p.eat()
p.sleep()
p.work()

    init初始化,魔术方法的一种,用来初始化对象;__init__()方法会自动调用,在创建对象的时候,init里面的属性叫做对象属性。

class People(object) :
    def __init__(self , name , age , sex) :
        # 将后面的值赋予自己的self.xxx属性
        self.name = name
        self.age = age
        self.sex = sex
    def study(self):
        print('学习使人快乐')

    在创建对象的时候直接赋值

p = People('小明',17,True)
print(p.name)

    在初始化的时候,直接给参数增加默认值

class Person(object) :
    # 在初始化的时候 直接给参数增加默认值
    def __init__(self , name='',age=0,sex=True):
        self.name = name
        self.age = age
        self.sex = sex

注意:对象属性不能通过类名+属性的方式调用,只能通过对象来调用;类属性可以通过类名+属性的方式调用,也可以通过对象来调用。对象方法可以通过对象+方法名这种形式来调用,也可以通过类名 + 方法名,然后将对象参数传入方法中这种形式来调用。

二、私有属性

     对象属性中,凡是带下划线的,都是不希望外部使用;如果加的是单下划线,可以通过p1.name = 'xiaoming'这种方式使用;如果加的是双下划线,可以通过p1._People__name这种方式使用。

class People(object):
    def __init__(self,name='',sex='',age='16',fond=''):
        self.name = name
        self._sex = sex
        self.__age = age
        self.__fond = fond
    # get set方法
    @property
    def fond(self):
        print('fond被set了')
        return self.__fond
    fond.setter
    def fond(self,fond):
        self.__fond = fond
p = People()
p.name = '张三'
print(p.name)
p._sex = '男'
print(p._sex)
# __age
print(p._People__age)

三、继承

     子类继承父类,子类会拥有父类的属性和方法,子类也可以重写父类的属性和方法,子类也可以拥有自己独有的属性和方法。

class A(object):
    def say(self):
        print('my name is A')
class B(A):
    def say(self):
        print('my name is B')
class C(A):
    def say(self):
        print('my name is C')
class D(B,C):
    pass
d = D()
d.say()

四、类方法和静态方法

     如果我们希望用类来处理这个方法,或者不希望某一个属性值因为对象而改变的时候就可以用类方法。静态方法的使用绝大部分都可以用实例方法或者类方法来替代。在绝大部分情况下,我们的方法都会声明成对象方法。

class FoodTemplate(object):
    # 一旦对象被创建会自动调用这个方法
    # 类属性
    count = 0
    def __init__(self):
        print('创建了一次')
    pass
    @classmethod
    def myCount(cls):
        print('一共被创建了{}个'.format(FoodTemplate.count))
yueBing = FoodTemplate()
manTou = FoodTemplate()
FoodTemplate.myCount()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值