0万物皆是对象
a=1
print(type(a))
print(type(int))
结果:<class ‘int’>
<class ‘type’>
对象由类实例化产生
1定义类和对象
定义类:
class Human:
#成员属性
sex = 'man'
age = 18
name = '小明'
height = '180cm'
weight = '60kg'
#成员方法
def eat(self):
print('吃饭')
def drink(self):
print('self:',self,id(self))
print('喝水')
def sleep(self):
print('睡觉')
实例化对象a:
a=Human()
print("a:",a)
结果:a: <main.Human object at 0x000000000257C518>
查看对象a的数据类型:
print("type(a):",type(a))
结果:type(a): <class ‘main.Human’>
查看对象a的属性:
语法:对象.属性
print(a.sex)
结果:man
调用对象a的方法:
语法:对象.方法()
a.eat()
结果:吃饭
self
self即对象a
在对象使用方法的时候,当前对象会作为第一个参数的实参传入。
class Human:
#成员属性
sex = 'man'
#成员方法
def drink(self):
print('self:',self,id(self))
print('喝水')
a=Human()
print("a:",a,id(a))
a.drink()
结果:a: <main.Human object at 0x000000000259C550> 39437648
self: <main.Human object at 0x000000000259C550> 39437648
喝水
2继承
继承的格式:
class 父类:
pass
class 子类(父类):
pass
注意:①在不指定父类的情况下,所有的类均继承自object类。
②一个类中,__init__初始化魔术方法不能出现两次!
python调用父类中的方法【super().方法名()】
1、super().方法名()
2、父类名.方法名(self) #不加self会报异常,缺少1个位置参数,self指的是是谁调用的父类中的方法
3、super(当前类名,self).方法名()
注意: init,是构造方法或者构造函数,constructor,Python不会自动调用父类的constructor,你得亲自专门调用它。
两种方法:
父类名.init(self,参数) #注意名字是父类
super(子类名,self).init(参数) #注意名字是子类,而且init后是self之外的参数
if name == ‘main’:
3魔术方法
魔术方法:一种特殊的方法。
1.__ init__初始化魔术方法
- 触发时机:实例化对象之后触发。
- 功能:为对象添加成员。
- 参数:参数不固定,至少一个self参数。
- 返回值:无。
class Human:
#成员属性
#成员方法
def __init__(self):
self.sex = "man"
#实例化对象
a = Human()
print(a.sex)
结果:man