<?php
$user_name ="root";
$user_pass="";
$host_name="localhost";
$db_name="snap_wallet";
$con = mysqli_connect($user_name ,$user_pass,$host_name,$db_name;) or die('Unable to connect to database server');
if($con)
{
$image=$_POST["image"];
$name=$_POST["name"];
$sql="insert into images(name) values ('$name')";
$upload_path="uploads/$name.jpg";
if(mysqli_query($con,$sql))
{
file_put_contents($upload_path,base64_decode($image));
echo json_encode(array('response'->'Image Uploaded Succesfully..'));
}
else
{
echo json_encode(array('response'->'Image Upload Failed...'))
}
}
else
{
echo json_encode(array('response'->'Image Upload Failed...'))
}
mysqli_close($con);
?>
我想制作游戏,但是这段代码给了我以下错误:
# animal.py
class Animal:
def __init__(self):
self.action = {'feed':feed_pet}
def do_action(self, a):
action[a]()
def feed_pet(self):
print('Gives some food')
# main.py
from animal import *
my_pet = Animal()
my_pet.do_action('feed')
Python中没有像C一样的前向声明吗?
答案 0 :(得分:5)
问题是您不了解python类,您所指的是全局范围的名称feed_pet
,但您打算在该类中调用该函数,因为您需要使用self
,检查以下更改:
class Animal:
def __init__(self):
self.action = {'feed':self.feed_pet}
def do_action(self, a):
self.action[a]() //use self also for access instance attributes
def feed_pet(self):
print('Gives some food')
# main.py
from animal import *
my_pet = Animal()
my_pet.do_action('feed')
为清楚起见, Python是否支持类中的前向声明?
在python中不需要前向声明,与C不同,您可以根据需要重新定义任意对象多次,python会将最后一个对象保留为活动对象。另外,由于它在编译时没有静态类型,因此可以将任何变量用作任何类型,因此无需声明任何内容即可使用它,只是在运行时必须处于同一作用域内。
答案 1 :(得分:3)
使用self.action = {'feed': self.feed_pet}
来引用绑定实例函数。
没有全局名称feed_pet
。
答案 2 :(得分:0)
您在两个引用中均未激活所需的对象。没有通用功能feed_pet
或变量action
。有 个实例方法-因此您必须在每个引用(调用)中提供实例。下面的代码解决了单行输出“给些食物”的问题。请注意在我向通话中添加了self.
的两个地方。
# animal.py
class Animal:
def __init__(self):
self.action = {'feed': self.feed_pet} # Add "self"
def do_action(self, a):
self.action[a]() # Add "self"
def feed_pet(self):
print('Gives some food')
此外,请注意,这里没有声明,只有函数 definition 中隐含的一个。 Python只需要您在调用函数之前就定义好该函数。
答案 3 :(得分:0)
首先要弄清一些基本概念:
1. self参数是指向类实例的引用。(像在c ++中一样)
2.通过使用self,我们可以访问类的属性和方法。
在您的代码中,您引用了全局范围变量和方法。
使用自指针引用类变量和方法。
例如self.action = {'feed':self.feed_pet}